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.