【API网关Kong系列五】- 玩转Route

1、前景回顾

在上前章《API网关Kong系列三】 – 战前预热》 中我们已经对Route路由的定义做了解释,在这我们在回顾下。

Route实体定义匹配客户端请求的规则。每个路由都与一个服务相关联,而服务可能有多个与之相关联的路由。每一个匹配给定路线的请求都将被提交给它的相关服务。

路由和服务的组合(以及它们之间的关注点分离)提供了一种强大的路由机制,可以在Kong中定义细粒度的入口点,从而引导你的访问到不同upstream服务。

本章我们来具体介绍下Route的使用,以及如何和Service绑定,有关Service服务的介绍回顾下前一章《【API网关Kong系列四】-玩转Service服务》

2、业务场景

业务场景承接《【API网关Kong系列四】-玩转Service服务》 中的场景,我们给上一章创建的Service添加路由。

3、Route API

3.1、创建路由

我们来创建一个路由同时绑定到Service 上

$ curl -i -X POST \
  --url http://localhost:8001/services/example-service/routes \
  --data 'hosts[]=example.com'

收到如下响应信息,说明创建成功

HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive
    {
       "created_at":1519131139,
       "strip_path":true,
       "hosts":[
          "example.com"
       ],
       "preserve_host":false,
       "regex_priority":0,
       "updated_at":1519131139,
       "paths":null,
       "service":{
          "id":"79d7ee6e-9fc7-4b95-aa3b-61d2e17e7516"
       },
       "methods":null,
       "protocols":[
          "http",
          "https"
       ],
       "id":"f9ce2ed7-c06e-4e16-bd5d-3a82daef3f9d"
    }

验证: 我们在浏览器中输入http://example.com:8000/ 时被路由到Service上,也就是上章Service 指定的上游服务http://mockbin.org 上。
注: 需要在本地host 文件中添加example.com 的映射。

到这里我们就很简单的将路由和服务绑定,实现了简单的路由转发功能。

3.2 Route API 详解

3.2.1 添加 Route

请求地址/routes/
请求方式POST
参数
protocols请求协议 http、https
methods(半可选)此有路匹配的方法列表,如(GET, POST)主机、方法、路径至少有一个被设置
host(半可选)与此路由匹配的域名列表,主机、方法、路径至少有一个被设置
paths(半可选)与此路由匹配的路径,如/my-path,主机、方法、路径至少有一个被设置
strip_path(可选)当通过路由匹配到路径时,从Upstream请求URL中剥离匹配的前缀,默认为true
preserver_host(可选)当通过主机域名匹配到路由时,在upstream请求头中使用请求主机头,默认为false
service此路由相关连的服务

3.2.2 检索Route

请求地址/routes/{id}
请求方式GET
参数
id(必填)被检索路由的id属性

3.2.3 检索Route列表

请求地址/routes
请求方式GET
参数
Offset分页游标
size(可选默认100 最大1000)每页显示的条数

3.2.4 列出Service下的Route

请求地址/services/{service name or id }/routes
请求方式POST
参数
service name or id服务名称或者id

3.2.5 更新Route

请求地址/services/{name or id }/routes
请求方式PATCH
参数
name or id路由ID或者na me

3.2.6 更新和特定插件关联的Route

请求地址/plugins/{plugin id }/routes
请求方式PATCH
参数
plugin id与要更新的路由关联的插件的id

3.2.7 删除Route

请求地址/routes/{name or id }/routes
请求方式DELETE
参数
name orid要删除的路由的名称或者id

到这Route 的介绍基本结束了。

4 总结

Route 的基本功能介绍完成后,我们来简单的对本章的内容做下总结。
1: 回顾Route的概念,以及和Service关联的业务场景
2: 使用Kong Admin API 创建一个Route 并且和上章的Service进行关联,以达到一个简单的路由转发功能的链路
3: 介绍了Route的增删改查的API

想了解更多关于Kong网关的请移步
>>>>> 企业级API网关Kong

    原文作者:阅历笔记
    原文地址: https://segmentfault.com/a/1190000019906134
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞