0.背景
1.基本概念
在接入kong网关后
- 上游访问时,url中
host
:port
/route
,eg:localhost:8000/myPath
/myPath
即为我们的route信息,这个route对应着一个service,根据映射信息,找到service
.service
记录着真实的url,eg:www.baidu.com.
这样,上游请求/myPath时,通过kong,转发到了真实的url:www.baidu.com.
当然,这只是一个简单的应用.在上游/上游请求的中间,请求都交给kong这个网关后,将可以做很多事情.
下方采用请求的方式进行操作,其他方式(后管界面/yml文件)请参考Expose your Services with Kong Gateway
1.1 service
service服务对象,包含着一个对应的api.
一个service可以对应多个route.
eg:service对应着www.baidu.com,将/a或者/b两个route都绑定至service后,通过/a或者/b都可以访问到www.baidu.com.
1.1.1 新增service
# POST
{{ip}}:8001/services
1.1.2 查询service
# GET
{{ip}}:8001/services/{{serviceName}}
1.1.3 查询所有service
# GET
{{ip}}:8001/services
1.2 route
将route绑定至指定service后,便可以通过该route找到对应的service.
一个route只能对应一个service
1.2.1 新增route
# POST
{{ip}}:8001/services/{{serviceName}}/routes
# 请求中的{{serviceName}}标志着当前route绑定到哪个service
1.2.2 查询route
# GET
{{ip}}:8001/routes/{{routeName}}
1.2.3 查询所有route
# GET
{{ip}}:8001/routes
1.2.4 验证route
访问/a,可以看到跳转至百度.
# GET
{{ip}}:8000/{{pathOfRoute}}
2.扩展
2.1 service与route的关系
-
一个route只能对应一个service
-
一个service可以对应多个route
在上游访问时,是通过route的path进行访问的,这个时候,如果route背后有多个service,就说不清这个route去哪里了.
但是/a或/b都绑定在一个service下,在进行/a或者/b访问时,我们都能找到其对应的serveice.
2.2 以对象的形式去看route
可以发现,route具有两个基本参数,name与path[].
其中path[]是个数组,即上面的/a或/b形式访问,可以通过一个route实现.