MySQL路由器8.0  / 第 6 章 MySQL Router REST API  /  6.1 一个简单的 MySQL Router REST API 指南

6.1 一个简单的 MySQL Router REST API 指南

本指南设置了一个基本的 Router REST API,添加了基本的身份验证,并公开了一个路由来检查 Router 的状态。REST API 使用配置部分进行配置,启用和使用 REST API 需要选项。例如,这里有一个最小的 MySQL Router 配置文件,它启用了最基本的 REST API 功能:

Press CTRL+C to copy
[DEFAULT] logging_folder= # Exposes /stable:8081 [http_server] # Exposes /api/20190715/swagger.json [rest_api]

典型的路由器配置文件包含其他选项,但本指南重点关注 REST API。保存这个文件(我们的指南假设为(/foo/mysqlrouter.conf),启动Router加载这个文件(比如mysqlrouter -c /foo/mysqlrouter.conf,确认 /stable:8081/api/20190715/swagger.json 存在。示例swagger.json内容:

Press CTRL+C to copy
{ "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 插件来公开路由器/状态路径。身份验证是必需的,启用身份验证需要额外的配置选项。例如:

Press CTRL+C to copy
[DEFAULT] logging_folder= # Exposes /stable: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

Press CTRL+C to copy
# 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,它现在包含其 /router/status路由的 [rest_router] 插件信息:

Press CTRL+C to copy
{ "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" } } } } }

加载 /stable:8081/api/20190715/router/status 提示输入用户名和密码(我们在示例中创建的),成功返回路由器的当前状态。例如:

Press CTRL+C to copy
{ "processId": 1883, "productEdition": "MySQL Community - GPL", "timeStarted": "2022-01-25T21:23:50.442399Z", "version": "8.0.31", "hostname": "boat" }

我们设置了一个带有经过身份验证的后端的基本 Router REST API;一个启用了两个 REST API 插件的 REST API。