Spec-Zone.ru › MySQL Router 8.4

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.
https://docs.oracle.com/cd/E17952_01/mysql-router-8.4-en/mysql-router-rest-api-setup.html

Spec-Zone.ru

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