APISIX Dashboard中文文档(一)
2022年7月6日13:24:56
APISIX Dashboard中文文档(一)
APISIX Dashboard中文文档(二)
APISIX Dashboard中文文档(三)
官方文档:https://apisix.apache.org/zh/docs/dashboard/USER_GUIDE/
用户指南
以下是模块快照的一部分。
仪表板#
我们通过在 iframe 中引用来支持监控页面。 在访问 Grafana 之前,请启用 allow_embedding=true,默认为 false。 由于安全策略,这会导致浏览器无法正确呈现 Grafana 页面。
路由#
Route 模块旨在通过 UI 控制路由,而不是调用 API。
列表#
创建#
设置#
导入 OpenAPI 指南
概述#
OpenAPI 规范 (OAS) 为 RESTful API 定义了一个与语言无关的标准接口,它允许人类和计算机在不访问源代码、文档或通过网络流量检查的情况下发现和理解服务的功能。
Apache APISIX Dashboard 支持导入OpenApi3.0(我们将简称为 OAS3.0)文件,json
并且yaml
都支持,以创建一个或多个路由。目前我们支持大部分的 OpenApi 规范,但还是有一些区别,比如兼容性和扩展字段。
扩展字段#
APISIX Route 中有些字段是必填的,但 OAS3.0 的属性中没有包含,为了方便基于 OAS3.0 扩展自定义路由实体,我们增加了一些扩展字段,如上游、插件、主机等上。所有扩展都以 x-apisix 开头。
Extended fields | APISIX Route Properties |
---|---|
x-apisix-plugins | plugins |
x-apisix-script | script |
x-apisix-upstream | upstream |
x-apisix-host | host |
x-apisix-hosts | hosts |
x-apisix-remote_addr | remote_addr |
x-apisix-priority | priority |
x-apisix-vars | vars |
x-apisix-filter_func | filter_func |
x-apisix-labels | labels |
x-apisix-enable_websocket | enable_websocket |
x-apisix-status | status |
x-apisix-service_id | service_id |
x-apisix-upstream_id | upstream_id |
请注意,我们只扩展了第一级字段,子级字段仍然保持不变。 以 x-apisix-upstream
为例。
...
# 我们在 OAS3.0 中添加 x-apisix-upstream 作为扩展字段代表上游
x-apisix-upstream:
# x-apisix-upstream 的子字段仍然与上游的子字段保持一致
type: roundrobin
nodes:
- host: 172.16.238.20
port: 1980
weight: 1
...
有关 APISIX 路由属性的更多详细信息,请参阅
OAS3.0 兼容性
当我们从 OAS3.0 导入路由时,会因为 APISIX 的 Route 中没有对应的字段而遗漏 OAS3.0 中的一些字段:
- API General Info:用于描述你的API的一般信息,有时,一个OAS3.0文件包含一系列 属于应用程序的 api,因此此信息不同于 api 的名称和额外的基本信息。
例子:
# this part of information will be missed
openapi: 3.0.0
info:
version: 1.0.0-oas3
description: test desc
license:
name: Apache License 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0'
title: test title
...
- API 服务器和基本路径:上游 url + url 前缀(选项)
例子:
# this part of information will be missed
...
servers:
- url: https://api.example.com/v1
...
- Path params: 路径中描述的 api 参数.
例子:
# 不管 uri 中有多少路径参数
# 从 OAS3.0 文件导入路由后,我们将得到带有 uri 的路由,如 `/get/*`
...
paths:
/get/{id}/{name}:
delete:
operationId: api1DELETE
...
- Query params: 查询中描述的 api 参数.
Example:
...
paths:
/users:
get:
summary: Get a user by ID
# this part of information will be missed
parameters:
- in: path
name: userId
schema:
type: integer
required: true
description: Numeric ID of the user to get
...
- Responses description and links: 定义 API 操作的响应.
Example:
...
paths:
/hello:
get:
description: hello world.
operationId: hello
x-apisix-service_id: service1
# this part of information will be missed
responses:
'200':
description: list response
default:
description: unexpected error
...
不同用户场景下OAS3.0配置示例
配置基本发布路由
提示:导入的路由默认的status
为unpublished,表示该路由不能访问,如果要导入一个published
的路由,需要在里面加上x-apisix-status: 1
你的OAS3.0文件
openapi: 3.0.0
info:
version: 1.0.0-oas3
description: test desc
license:
name: Apache License 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0'
title: test title
paths:
/hello: # route uri
get: # route method
description: hello world. # route desc
operationId: hello # route name
x-apisix-upstream: # route upstream
type: roundrobin
nodes:
- host: 172.16.238.20
port: 1980
weight: 1
x-apisix-status: 1 # the route will be published after imported
responses:
'200':
description: list response
default:
description: unexpected error
使用插件配置路由
提示:扩展字段支持的大多数插件 x-apisix-plugins
openapi: 3.0.0
info:
version: 1.0.0-oas3
description: test desc
license:
name: Apache License 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0'
title: test title
paths:
/hello:
get:
description: hello world.
operationId: hello
x-apisix-upstream:
type: roundrobin
nodes:
- host: 172.16.238.20
port: 1980
weight: 1
x-apisix-plugins:
limit-count:
count: 2
time_window: 60
rejected_code: 503
key: remote_addr
policy: local
responses:
'200':
description: list response
default:
description: unexpected error
配置带有参数验证的路由
提示:对于插件 request-validation,我们将使用 参数序列化 用于标头参数验证和 描述请求正文 用于 OAS3.0 中的正文参数验证
openapi: 3.0.0
info:
version: "1"
description: |-
test desc
license:
name: Apache License 2.0
url: http://www.apache.org/licenses/LICENSE-2.0
title: |-
test title
paths:
/hello:
post:
description: |-
hello world.
operationId: hello
x-apisix-upstream:
type: roundrobin
nodes:
- host: "172.16.238.20"
port: 1980
weight: 1
parameters:
- name: id
in: header
description: ID of pet to use
required: true
schema:
type: string
style: simple
requestBody:
content:
'application/x-www-form-urlencoded':
schema:
properties:
name:
description: Update pet's name
type: string
status:
description: Updated status of the pet
type: string
required:
- status
responses:
200:
description: list response
default:
description: unexpected error
使用身份验证插件配置路由
注意: 对于插件 basic-auth jwt-auth 和 key-auth 我们将使用 Authentication 在 OAS3.0 中
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
openapi: 3.0.0
info:
version: "1"
description: |-
test desc
license:
name: Apache License 2.0
url: http://www.apache.org/licenses/LICENSE-2.0
title: |-
test title
paths:
/hello:
post:
description: |-
hello world.
operationId: hello
x-apisix-upstream:
type: roundrobin
nodes:
- host: "172.16.238.20"
port: 1980
weight: 1
security:
- basicAuth: []
- ApiKeyAuth: []
- BearerAuth: []
responses:
200:
description: list response
default:
description: unexpected error
配置现有服务或上游的路由
提示: 如果 APISIX 中不存在 service_id
或 upstream_id
,从配置文件导入路由会报错
openapi: 3.0.0
info:
version: 1.0.0-oas3
description: test desc
license:
name: Apache License 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0'
title: test title
paths:
/hello:
get:
description: hello world.
operationId: hello
x-apisix-service_id: service1
responses:
'200':
description: list response
default:
description: unexpected error
配置多个路由
info:
title: RoutesExport
version: 3.0.0
openapi: 3.0.0
paths:
/get:
delete:
operationId: api1Delete
requestBody: {}
responses:
default:
description: ''
x-apisix-enableWebsocket: false
x-apisix-labels:
API_VERSION: v2
dev: test
x-apisix-plugins:
proxy-rewrite:
disable: false
scheme: https
x-apisix-priority: 0
x-apisix-status: 1
x-apisix-upstream:
nodes:
- host: httpbin.org
port: 443
weight: 1
type: roundrobin
pass_host: node
x-apisix-vars: []
get:
operationId: api1Get
requestBody: {}
responses:
default:
description: ''
x-apisix-enableWebsocket: false
x-apisix-labels:
API_VERSION: v2
dev: test
x-apisix-plugins:
proxy-rewrite:
disable: false
scheme: https
x-apisix-priority: 0
x-apisix-status: 1
x-apisix-upstream:
nodes:
- host: httpbin.org
port: 443
weight: 1
type: roundrobin
pass_host: node
x-apisix-vars: []
/post:
post:
operationId: test_post
requestBody: {}
responses:
default:
description: ''
security: []
x-apisix-enableWebsocket: false
x-apisix-labels:
API_VERSION: v1
version: v1
x-apisix-plugins:
proxy-rewrite:
disable: false
scheme: https
x-apisix-priority: 0
x-apisix-status: 1
x-apisix-upstream:
nodes:
- host: httpbin.org
port: 443
weight: 1
type: roundrobin
pass_host: node
x-apisix-vars: []
管理API 的 API 文档
Manager API 直接操作 ETCD 并为 Apache APISIX 提供数据管理,为前端或其他客户端提供 API.
License: Apache License 2.0
/apisix/admin/migrate/export
GET
简介
导出配置文件以进行迁移
参数
None.
返回
A file for download.
/apisix/admin/migrate/import
简介
导入配置文件以恢复配置
POST
参数 (FORM)
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
mode | body(form) | import mode (return, skip or overwrite) | Yes | string |
file | body(form) | file to upload | Yes | string |
返回
Code | Description | Schema |
---|---|---|
0 | import success | ApiError |
20001 | Config conflict | ApiError |
/apisix/admin/check_ssl_cert
POST
简介
验证 SSL 证书和密钥
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
cert | body | cert of SSL | Yes | string |
key | body | key of SSL | Yes | string |
返回
Code | Description | Schema |
---|---|---|
0 | SSL verify passed | ApiError |
default | unexpected error | ApiError |
/apisix/admin/check_ssl_exists
POST
简介
检查 SSL 是否存在
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
cert | body | cert of SSL | Yes | string |
key | body | key of SSL | Yes | string |
返回
Code | Description | Schema |
---|---|---|
0 | SSL exists | ApiError |
default | unexpected error | ApiError |
/apisix/admin/consumers
GET
简介
根据指定的页码和页面大小返回消费者列表,可以通过用户名搜索消费者。
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
page | query | page number | No | integer |
page_size | query | page size | No | integer |
username | query | username of consumer | No | string |
返回
Code | Description | Schema |
---|---|---|
0 | list response | [ consumer ] |
default | unexpected error | ApiError |
/apisix/admin/notexist/routes
GET
简介
路由的返回结果通过名称和排除ID检查是否存在
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
name | query | name of route | No | string |
exclude | query | id of route that exclude checking | No | string |
返回
Code | Description | Schema |
---|---|---|
0 | route not exists | ApiError |
default | unexpected error | ApiError |
/apisix/admin/routes
GET
简介
根据指定的页码和页面大小返回路由列表,可以按名称和uri搜索路由
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
page | query | page number | No | integer |
page_size | query | page size | No | integer |
name | query | name of route | No | string |
uri | query | uri of route | No | string |
label | query | label of route | No | string |
返回
Code | Description | Schema |
---|---|---|
0 | list response | [ route ] |
default | unexpected error | ApiError |
/apisix/admin/services
GET
简介
根据指定的页码和页面大小返回服务列表,并可按名称搜索服务
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
page | query | page number | No | integer |
page_size | query | page size | No | integer |
name | query | name of service | No | string |
返回
Code | Description | Schema |
---|---|---|
0 | list response | [ service ] |
default | unexpected error | ApiError |
/apisix/admin/ssl
GET
简介
根据指定的页码和页面大小返回 SSL 列表,可以通过 sni 进行 SSL 搜索。
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
page | query | page number | No | integer |
page_size | query | page size | No | integer |
sni | query | sni of SSL | No | string |
返回
Code | Description | Schema |
---|---|---|
0 | list response | [ ssl ] |
default | unexpected error | ApiError |
/apisix/admin/upstreams
GET
简介
根据指定的页码和页面大小返回上游列表,可以按名称搜索上游
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
page | query | page number | No | integer |
page_size | query | page size | No | integer |
name | query | name of upstream | No | string |
返回
Code | Description | Schema |
---|---|---|
0 | list response | [ upstream ] |
default | unexpected error | ApiError |
/apisix/admin/user/login
POST
简介
用户登录.
参数
Name | Located in | Description | Required | Schema |
---|---|---|---|---|
username | body | user name | Yes | string |
password | body | password | Yes | string |
返回
Code | Description | Schema |
---|---|---|
0 | login success | ApiError |
default | unexpected error | ApiError |
Models
ApiError
Name | Type | Description | Required |
---|---|---|---|
code | long | response code | No |
message | string | response message | No |
BaseInfo
Name | Type | Description | Required |
---|---|---|---|
create_time | long | No | |
id | object | No | |
update_time | long | No |
Consumer
Name | Type | Description | Required |
---|---|---|---|
create_time | long | No | |
desc | string | No | |
id | object | No | |
labels | object | No | |
plugins | object | No | |
update_time | long | No | |
username | string | No |
LoginInput
Name | Type | Description | Required |
---|---|---|---|
password | string | password | No |
username | string | user name | No |
Route
Name | Type | Description | Required |
---|---|---|---|
create_time | long | No | |
desc | string | No | |
enable_websocket | boolean | No | |
filter_func | string | No | |
host | string | No | |
hosts | [ string ] | No | |
id | object | No | |
labels | object | No | |
methods | [ string ] | No | |
name | string | No | |
plugins | object | No | |
priority | long | No | |
remote_addr | string | No | |
remote_addrs | [ string ] | No | |
script | object | No | |
service_id | object | No | |
service_protocol | string | No | |
update_time | long | No | |
upstream | UpstreamDef | No | |
upstream_id | object | No | |
uri | string | No | |
uris | [ string ] | No | |
vars | object | No |
SSL
Name | Type | Description | Required |
---|---|---|---|
cert | string | No | |
certs | [ string ] | No | |
create_time | long | No | |
exptime | long | No | |
id | object | No | |
key | string | No | |
keys | [ string ] | No | |
labels | object | No | |
sni | string | No | |
snis | [ string ] | No | |
status | long | No | |
update_time | long | No | |
validity_end | long | No | |
validity_start | long | No |
Service
Name | Type | Description | Required |
---|---|---|---|
create_time | long | No | |
desc | string | No | |
enable_websocket | boolean | No | |
id | object | No | |
labels | object | No | |
name | string | No | |
plugins | object | No | |
script | string | No | |
update_time | long | No | |
upstream | UpstreamDef | No | |
upstream_id | object | No |
Upstream
Name | Type | Description | Required |
---|---|---|---|
checks | object | No | |
create_time | long | No | |
desc | string | No | |
hash_on | string | No | |
id | object | No | |
k8s_deployment_info | object | No | |
key | string | No | |
labels | object | No | |
name | string | No | |
nodes | object | No | |
pass_host | string | No | |
retries | long | No | |
service_name | string | No | |
timeout | object | No | |
type | string | No | |
update_time | long | No | |
upstream_host | string | No |
UpstreamDef
Name | Type | Description | Required |
---|---|---|---|
checks | object | No | |
desc | string | No | |
hash_on | string | No | |
k8s_deployment_info | object | No | |
key | string | No | |
labels | object | No | |
name | string | No | |
nodes | object | No | |
pass_host | string | No | |
retries | long | No | |
service_name | string | No | |
timeout | object | No | |
type | string | No | |
upstream_host | string | No |
QQ二群 166427999
博客文件如果不能下载请进群下载
如果公司项目有技术瓶颈问题,请联系↓↓
如果需要定制系统开发服务,请联系↓↓
技术服务QQ: 903464207