API网关Kong系列七-完整转发请求示例

24次阅读

共计 1766 个字符,预计需要花费 5 分钟才能阅读完成。

1、前景回顾

在前前面几章中,我们分别介绍了 Service、Route 使用和一些关键 API 介绍,还不了解的请回顾《企业级 API 网关 Kong 系列》
看起来比较零散、本章我们来完整的做一个请求转发的示例。

2、业务场景

在本节中,将向 Kong 添加 API。为此,您首先需要添加一个服务 ; 这就是 Kong 用来指代它管理的上游 API 和微服务的名称。

出于本指南的目的,我们将创建一个指向 Mockbin API 的服务。Mockbin 是一个“echo”类型的公共网站,它将返回请求的请求作为响应返回给请求者。这有助于了解 Kong 如何代理您的 API 请求。

在开始向服务发出请求之前,您需要为其添加路由。路由指定请求在到达 Kong 后如何(以及是否)发送到其服务。单个服务可以有多个路由。

配置服务和路由后,您将能够通过 Kong 使用它们发出请求。

Kong 在端口上公开了一个 RESTful Admin API:8001。Kong 的配置,包括添加服务和路由,是通过该 API 的请求进行的。

3、使用 Admin API 添加服务

发出以下 cURL 请求,将您的第一个服务(指向 Mockbin API)添加到 Kong:

$ curl -i -X POST \
  --url http://localhost:8001/services/ \
  --data 'name=example-service' \
  --data 'url=http://mockbin.org'

响应

HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive

{
   "host":"mockbin.org",
   "created_at":1519130509,
   "connect_timeout":60000,
   "id":"92956672-f5ea-4e9a-b096-667bf55bc40c",
   "protocol":"http",
   "name":"example-service",
   "read_timeout":60000,
   "port":80,
   "path":null,
   "updated_at":1519130509,
   "retries":5,
   "write_timeout":60000
}

4、使用 Admin API 添加路由

$ 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"
}

到这我们简单路由转发服务就创建完成了,接着我们来验证下

5、通 Kong 来转发请求

发出以下 cURL 请求以验证 Kong 是否正确地将请求转发给您的服务。请注意,默认情况下 Kong 处理端口上的代理请求:8000

$ curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: example.com'

成功的响应意味着 Kong 现在正在 http://localhost:8000 向 url 我们在步骤#3 中配置的请求转发请求,并将响应转发给我们。Kong 知道通过上面的 cURL 请求中定义的标头执行此操作。
当然我们也可以在 host 文件添加 example.com 的映射关系,然后直接在浏览器中输入 http://example.com:8000 也可达到一样的效果。

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

正文完
 0