title | keywords | description | ||||
---|---|---|---|---|---|---|
public-api |
|
This document contains information about the Apache APISIX public-api Plugin. |
The public-api
is used for exposing an API endpoint through a general HTTP API router.
When you are using custom Plugins, you can use the public-api
Plugin to define a fixed, public API for a particular functionality. For example, you can create a public API endpoint /apisix/plugin/jwt/sign
for JWT authentication using the jwt-auth Plugin.
The public API added in a custom Plugin is not exposed by default and the user should manually configure a Route and enable the public-api
Plugin on it.
Name | Type | Required | Default | Description |
---|---|---|---|---|
uri | string | False | "" | URI of the public API. When setting up a Route, use this attribute to configure the original public API URI. |
The example below uses the jwt-auth Plugin and the key-auth Plugin along with the public-api
Plugin. Refer to their documentation for it configuration. This step is omitted below and only explains the configuration of the public-api
Plugin.
You can enable the Plugin on a specific Route as shown below:
curl -X PUT 'http://127.0.0.1:9080/apisix/admin/routes/r1' \
-H 'X-API-KEY: <api-key>' \
-H 'Content-Type: application/json' \
-d '{
"uri": "/apisix/plugin/jwt/sign",
"plugins": {
"public-api": {}
}
}'
Now, if you make a request to the configured URI, you will receive a JWT response:
curl 'http://127.0.0.1:9080/apisix/plugin/jwt/sign?key=user-key'
You can also use a custom URI for exposing the API as shown below:
curl -X PUT 'http://127.0.0.1:9080/apisix/admin/routes/r2' \
-H 'X-API-KEY: <api-key>' \
-H 'Content-Type: application/json' \
-d '{
"uri": "/gen_token",
"plugins": {
"public-api": {
"uri": "/apisix/plugin/jwt/sign"
}
}
}'
Now you can make requests to this new endpoint:
curl 'http://127.0.0.1:9080/gen_token?key=user-key'
You can use the key-auth
Plugin to add authentication and secure the Route:
curl -X PUT 'http://127.0.0.1:9080/apisix/admin/routes/r2' \
-H 'X-API-KEY: <api-key>' \
-H 'Content-Type: application/json' \
-d '{
"uri": "/gen_token",
"plugins": {
"public-api": {
"uri": "/apisix/plugin/jwt/sign"
},
"key-auth": {}
}
}'
Now, only authenticated requests are allowed:
curl -i 'http://127.0.0.1:9080/gen_token?key=user-key'
-H "apikey: test-apikey"
HTTP/1.1 200 OK
The below request will fail:
curl -i 'http://127.0.0.1:9080/gen_token?key=user-key'
HTTP/1.1 401 UNAUTHORIZED
To disable the public-api
Plugin, you can delete the corresponding JSON configuration from the Plugin configuration. APISIX will automatically reload and you do not have to restart for this to take effect.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。