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]
Типичный файл конфигурации маршрутизатора содержит другие опции, но это руководство фокусируется на REST API. Сохраните этот файл (наше руководство предполагает (/foo/mysqlrouter.conf), запустите загрузку маршрутизатора с этим файлом (например, 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": {}
}
Это демонстрирует, что плагин 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
Маршрутизатор использует области для аутентификации, и утилита командной строки 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
Перезапуск маршрутизатора с нашим новым файлом конфигурации генерирует другой 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 запрашивает имя пользователя и пароль (которые мы создали в нашем примере) и при успехе возвращает текущий статус маршрутизатора. Например:
{
"processId": 1883,
"productEdition": "MySQL Community - GPL",
"timeStarted": "2022-01-25T21:23:50.442399Z",
"version": "8.4.4",
"hostname": "boat"
}
Мы настроили базовый REST API маршрутизатора с аутентифицированным бэкендом; REST API с двумя включенными плагинами REST API.
© 2025 Oracle
Licensed under the GPLv2 License.