Service 服务

本文原文链接:https://docs.konghq.com/1.1.x/admin-api/#service-object

顾名思义,服务实体是每个上游服务的抽象。举个例子,services 可以是一个数据转换微服务,一个计费api等等。

Service 的主要属性是其URL(Kong应该将流量代理到的地方),可以设置为单个字符串,也可以单独指定其protocol, host, portpath

Service 与 router 相关联(一个 Service 可以有许多与之关联的 router)。router 是Kong的入口点,并定义匹配客户端请求的规则。一旦 router 匹配,Kong就会将请求代理到其关联的服务。有关Kong代理流量的详细说明,请参阅代理参考

  1. {
  2. "id": "0c61e164-6171-4837-8836-8f5298726d53",
  3. "created_at": 1422386534,
  4. "updated_at": 1422386534,
  5. "name": "my-service",
  6. "retries": 5,
  7. "protocol": "http",
  8. "host": "example.com",
  9. "port": 80,
  10. "path": "/some_api",
  11. "connect_timeout": 60000,
  12. "write_timeout": 60000,
  13. "read_timeout": 60000
  14. }
  15. Permalink

添加一个 Service

创建一个service

  1. POST:/services

请求体

参数 描述
name
optional
Service 名称
retries
optional
代理失败时要执行的重试次数。默认为 5
protocol
用于与上游通信的协议。它可以是httphttps之一。默认为“http”。
host
上游服务的 host
port
上游服务端口。默认为80。
path
optional
在上游服务器的请求中使用的路径。
connect_timeout
optional
建立与上游服务器的连接的超时时间(以毫秒为单位)。默认为 60000
write_timeout
optional
用于向上游服务器发送请求的两次连续写操作之间的超时(以毫秒为单位)。默认为60000
read_timeout
optional
用于向上游服务器发送请求的两次连续读取操作之间的超时(以毫秒为单位)。默认为60000
url
shorthand-attribute
用于同时设置protocolhostportpath 的速记属性。此属性是只写的(Admin API永远不会“返回”该URL)。

响应

  1. HTTP 201 Created
  1. {
  2. "id": "0c61e164-6171-4837-8836-8f5298726d53",
  3. "created_at": 1422386534,
  4. "updated_at": 1422386534,
  5. "name": "my-service",
  6. "retries": 5,
  7. "protocol": "http",
  8. "host": "example.com",
  9. "port": 80,
  10. "path": "/some_api",
  11. "connect_timeout": 60000,
  12. "write_timeout": 60000,
  13. "read_timeout": 60000
  14. }

Services 列表

查询所有的 Services

  1. GET:/services

响应

  1. HTTP 200 OK
  1. {
  2. "data": [{
  3. "id": "f00c6da4-3679-4b44-b9fb-36a19bd3ae83",
  4. "created_at": 1422386534,
  5. "updated_at": 1422386534,
  6. "name": "my-service",
  7. "retries": 5,
  8. "protocol": "http",
  9. "host": "example.com",
  10. "port": 80,
  11. "path": "/some_api",
  12. "connect_timeout": 60000,
  13. "write_timeout": 60000,
  14. "read_timeout": 60000
  15. }, {
  16. "id": "bdab0e47-4e37-4f0b-8fd0-87d95cc4addc",
  17. "created_at": 1422386534,
  18. "updated_at": 1422386534,
  19. "name": "my-service",
  20. "retries": 5,
  21. "protocol": "http",
  22. "host": "example.com",
  23. "port": 80,
  24. "path": "/another_api",
  25. "connect_timeout": 60000,
  26. "write_timeout": 60000,
  27. "read_timeout": 60000
  28. }],
  29. "next": "http://localhost:8001/services?offset=6378122c-a0a1-438d-a5c6-efabae9fb969"
  30. }

查询 Services

查询

  1. GET:/services/{name or id}
参数 描述
name or id
required
要检索的服务的唯一标识符或名称。

查询与指定路由关联的服务

  1. GET:/routes/{route name or id}/service
参数 描述
route name or id
required
与要检索的服务关联的唯一标识符或Route的名称。

查询指定插件关联的服务

  1. GET:/plugins/{plugin id}/service
参数 描述
plugin id
required
与要检索的服务关联的插件的唯一标识符。

响应

  1. HTTP 200 OK
  1. {
  2. "id": "0c61e164-6171-4837-8836-8f5298726d53",
  3. "created_at": 1422386534,
  4. "updated_at": 1422386534,
  5. "name": "my-service",
  6. "retries": 5,
  7. "protocol": "http",
  8. "host": "example.com",
  9. "port": 80,
  10. "path": "/some_api",
  11. "connect_timeout": 60000,
  12. "write_timeout": 60000,
  13. "read_timeout": 60000
  14. }

更新 service

更新

  1. PATCH:/services/{name or id}
参数 描述
name or id
required
要更新的服务的唯一标识符或名称。

更新与指定路由关联的服务

  1. PATCH:/routes/{route name or id}/service
参数 描述
route name or id
required
与要更新的服务关联的唯一标识符或Route的名称。

更新与指定插件关联的服务

  1. PATCH:/plugins/{plugin id}/service
参数 描述
plugin id
required
与要更新的服务关联的插件的唯一标识符。

请求体

参数 描述
name
optional
Service 名称
retries
optional
代理失败时要执行的重试次数。默认为 5
protocol
用于与上游通信的协议。它可以是httphttps之一。默认为“http”。
host
上游服务的 host
port
上游服务端口。默认为80。
path
optional
在上游服务器的请求中使用的路径。
connect_timeout
optional
建立与上游服务器的连接的超时时间(以毫秒为单位)。默认为 60000
write_timeout
optional
用于向上游服务器发送请求的两次连续写操作之间的超时(以毫秒为单位)。默认为60000
read_timeout
optional
用于向上游服务器发送请求的两次连续读取操作之间的超时(以毫秒为单位)。默认为60000
url
shorthand-attribute
用于同时设置protocolhostportpath 的速记属性。此属性是只写的(Admin API永远不会“返回”该URL)。

响应

  1. HTTP 200 OK
  1. {
  2. "id": "0c61e164-6171-4837-8836-8f5298726d53",
  3. "created_at": 1422386534,
  4. "updated_at": 1422386534,
  5. "name": "my-service",
  6. "retries": 5,
  7. "protocol": "http",
  8. "host": "example.com",
  9. "port": 80,
  10. "path": "/some_api",
  11. "connect_timeout": 60000,
  12. "write_timeout": 60000,
  13. "read_timeout": 60000
  14. }

更新或创建服务

创建或更新

  1. PUT:/services/{name or id}
参数 描述
route name or id
required
与要更新或创建的服务关联的唯一标识符或Route的名称。

创建或更新与指定路由关联的服务

  1. PUT:/routes/{route name or id}/service
参数 描述
route name or id
required
与要更新或创建的服务关联的唯一标识符或Route的名称。

创建或更新与指定插件关联的服务

  1. PUT:/plugins/{plugin id}/service
参数 描述
plugin id
required
与要更新或创建的服务关联的插件的唯一标识符。

请求体

参数 描述
name
optional
Service 名称
retries
optional
代理失败时要执行的重试次数。默认为 5
protocol
用于与上游通信的协议。它可以是httphttps之一。默认为“http”。
host
上游服务的 host
port
上游服务端口。默认为80。
path
optional
在上游服务器的请求中使用的路径。
connect_timeout
optional
建立与上游服务器的连接的超时时间(以毫秒为单位)。默认为 60000
write_timeout
optional
用于向上游服务器发送请求的两次连续写操作之间的超时(以毫秒为单位)。默认为60000
read_timeout
optional
用于向上游服务器发送请求的两次连续读取操作之间的超时(以毫秒为单位)。默认为60000
url
shorthand-attribute
用于同时设置protocolhostportpath 的速记属性。此属性是只写的(Admin API永远不会“返回”该URL)。

使用body中指定的参数在请求的资源下插入(或替换)服务。Service 将通过nameid属性标识。

当name或id属性具有UUID的结构时,插入/替换 的服务将由其id标识。否则将通过其名称识别。

在创建新服务而不指定id(既不在URL中也不在body中)时,它将自动生成。

请注意,请注意,URL中的name和请求体中的name名称必须一样。

响应

  1. HTTP 201 Created or HTTP 200 OK

请参阅POST和PATCH响应

删除 service

删除

  1. DELETE:/services/{name or id}
参数 描述
name or id
required
要删除的服务的唯一标识符或名称。

删除与指定路由关联的服务

  1. DELETE:/routes/{route name or id}/service
参数 描述
route name or id
required
与要删除的服务关联的唯一标识符或Route的名称。

响应

  1. HTTP 204 No Content