service介绍:
service 是声明了一组name、host、port、protocol等配置的函数。可以绑定route、upstream上下游服务。并且对于route、upstream可以绑定多个。
新增service后,kong会自动分配一个id值,该id为service的唯一标识。可用于后期修改、查看以及绑定route、upstream。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
命令:
kong网关的命令接口基本符合restful api风格。官网上的addservice、list service只是模块名称,不是命令,不要混淆。
不同的命令主要区分在http的请求方法(get、post、put、patch、delete)。
1、addservice(新增服务)
post 方法,api:http://127.0.0.1:8001/services
参数主要放置在requestBody内。
上图是使用postman发起的请求,可以看出使用的是post请求,参数放置在body里。
创建成功后,kong服务会返回此次创建成功的service的name等所有配置属性。同时会发配一个唯一的service.id
这种是直接创建service,然后创建的同时通过配置一些参数设置属性。此外还可以直接针对已存在的certificates直接创建绑定服务
(1)post 方法 api:http://127.0.0.1:8001/certificates /{certificates id}/service
参数和直接创建service方法一致。其中certificates id就是kong服务分配给certificates 路由的唯一标识id
2、查看 list service 、retrieve service(检索服务)--两者功能类似,合并到一起
(1) get方法 api :http://127.0.0.1:8001/services
展示所有已创建的服务
(2)get方法 api:http://127.0.0.1:8001/services/{service id/name}
只展示对应service id/name的服务属性
(3)get方法 api:http://127.0.0.1:8001/certificates/{certificates id}/services
展示与指定证书关联绑定的服务
(4)get方法 api:http://127.0.0.1:8001/routes/{routes id}/service
检索与指定route id绑定的服务。同样的也可以检索指定plugin 插件(/plugins/{plugin id}/service)的服务
3、修改 update service
方法 patch 。局部更新
(1)http://127.0.0.1:8001/service/{service id}
针对指定的service id修改属性
(2)http://127.0.0.1:8001/certificates/{certificate id}/services/{service name or id}
(3)http://127.0.0.1:8001//plugins/{plugin id}/service
修改与指定插件的关联的service。route与此类似。/routes/{route name or id}/service
4、替换(create or update service)
使用的http方法是put,结合put的用法以及api参数,我理解更偏向与对现有服务的整体创建或替换。如果指定id则是替换,没有id则是新建
(1)http://127.0.0.1:8001/services/{service name or id}
(2)http://127.0.0.1:8001/certificates/{certificate id}/services/{service name or id}
(3)http://127.0.0.1:8001//routes/{route name or id}/service
/plugins/{plugin id}/service
5、删除 delete service
(1)/services/{service name or id}
(2)/certificates/{certificate id}/services/{service name or id}
(3)/routes/{route name or id}/service