Spec-Zone.ru › MySQL Router 9.2

6.1 Руководство по настройке REST API MySQL Router

Это руководство описывает настройку базового REST API маршрутизатора, добавление базовой аутентификации и экспонирование маршрута для проверки состояния маршрутизатора. REST API настраивается с помощью разделов конфигурации, и необходимы опции для включения и использования REST API. Например, вот минимальный файл конфигурации MySQL Router, включающий базовые функциональности REST API:

[DEFAULT]
logging_folder=

# Exposes http://127.0.0.1:8081
[http_server]

# Exposes /api/20190715/swagger.json
[rest_api]

Типичный файл конфигурации Router содержит и другие опции, но это руководство фокусируется на REST API. Сохраните этот файл (наше руководство предполагает (/foo/mysqlrouter.conf), запустите загрузку Router с этим файлом (например, mysqlrouter -c /foo/mysqlrouter.conf), и подтвердите, что http://127.0.0.1:8081/api/20190715/swagger.json существует. Пример swagger.json содержимого:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}

Это демонстрирует, что плагин Router REST API загружен, и что дополнительные плагины, экспонирующие маршруты и пути, не включены. Для получения swagger.json аутентификация не требуется.

Примечание

Номер версии API может измениться в будущих выпусках; и будущие версии могут включать функциональность для получения этого целочисленного значения API.

Далее, включим простой rest_router плагин, чтобы экспонировать путь router/status. Требуется аутентификация, и для включения аутентификации требуются дополнительные параметры конфигурации. Например:

[DEFAULT]
logging_folder=

# Exposes http://127.0.0.1:8081
[http_server]

# Exposes /api/20190715/swagger.json
[rest_api]

# Exposes /api/20190715/router/status
[rest_router]
require_realm=somerealm

# Exposes /api/20190715/routes/*
#[rest_routing]
#require_realm=somerealm

# Exposes /api/20190715/metadata/*
#[rest_metadata_cache]
#require_realm=somerealm

# Define our realm
[http_auth_realm:somerealm]
backend=somebackend
method=basic
name=Some Realm

# Define our backend; this file must exist and validate
[http_auth_backend:somebackend]
backend=file
filename=/etc/mysqlrouter/mysqlrouter.pwd

Router использует сферы для аутентификации, и утилита командной строки mysqlrouter_passwd генерирует и управляет этими пользователями. Например, это создает пользователя с именем someuser и сохраняет его в новый файл с именем /etc/mysqlrouter/mysqlrouter.pwd:

# Generate and save the user/pass
$> mysqlrouter_passwd set /etc/mysqlrouter/mysqlrouter.pwd someuser
Please enter password:

# Optionally list usernames and salted passwords in the file:
$> mysqlrouter_passwd list /etc/mysqlrouter/mysqlrouter.pwd

someuser:$5$43tfYEwobPBLkYDB$XnHyC0uXY1F4f6ryd8Vj5CUnEqcH3tqf4pud9kqIji3

Перезапуск Router с нашим новым файлом конфигурации генерирует другой swagger.json, который теперь содержит информацию о плагине [rest_router] для маршрута /router/status:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [
    {
      "name": "app",
      "description": "Application"
    }
  ],
  "paths": {
    "/router/status": {
      "get": {
        "tags": [
          "app"
        ],
        "description": "Get status of the application",
        "responses": {
          "200": {
            "description": "status of application",
            "schema": {
              "$ref": "#/definitions/RouterStatus"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "RouterStatus": {
      "type": "object",
      "properties": {
        "timeStarted": {
          "type": "string",
          "format": "data-time"
        },
        "processId": {
          "type": "integer"
        },
        "version": {
          "type": "string"
        },
        "hostname": {
          "type": "string"
        },
        "productEdition": {
          "type": "string"
        }
      }
    }
  }
}

Загрузка http://127.0.0.1:8081/api/20190715/router/status запрашивает имя пользователя и пароль (которые мы создали в нашем примере) и при успехе возвращает текущее состояние Router. Например:

{
  "processId": 1883,
  "productEdition": "MySQL Community - GPL",
  "timeStarted": "2022-01-25T21:23:50.442399Z",
  "version": "9.2.0",
  "hostname": "boat"
}

Мы настроили базовый REST API Router с аутентифицированным бэкендом; REST API с двумя включёнными плагинами REST API.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-router-9.2-en/mysql-router-rest-api-setup.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API