发布 API

描述

本文将引导你了解 APISIX 的上游、路由以及服务的概念,并介绍如何通过 APISIX 发布你的 API。

概念介绍

上游

Upstream 也称为上游,上游是对虚拟主机的抽象,即应用层服务或节点的抽象。

上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。当多个路由或服务引用同一个上游时,可以通过创建上游对象,在路由或服务中使用上游 ID 的方式引用上游,减轻维护压力。

路由

Route 也称为路由,是 APISIX 中最基础和最核心的资源对象。

APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游服务。路由中主要包含三部分内容:匹配规则、插件配置和上游信息。

服务

Service 也称为服务,是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系。

前提条件

在进行如下操作前,请确保你已经通过 Docker 启动 APISIX

公开你的服务

  1. 创建上游。

创建一个包含 httpbin.org 的上游服务,你可以使用它进行测试。这是一个返回服务,它将返回我们在请求中传递的参数。

  1. curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
  2. -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
  3. {
  4. "type": "roundrobin",
  5. "nodes": {
  6. "httpbin.org:80": 1
  7. }
  8. }'

在该命令中,我们指定了 Apache APISIX 的 Admin API Key 为 edd1c9f034335f136f87ad84b625c8f1,并且使用 roundrobin 作为负载均衡机制,并设置了 httpbin.org:80 为上游服务。为了将该上游绑定到路由,此处需要把 upstream_id 设置为 1。此处你可以在 nodes 下指定多个上游,以达到负载均衡的效果。

如需了解更多信息,请参考上游

  1. 创建路由。
  1. curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
  2. -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
  3. {
  4. "methods": ["GET"],
  5. "host": "example.com",
  6. "uri": "/anything/*",
  7. "upstream_id": "1"
  8. }'
发布 API - 图1注意

创建上游非必须步骤,你可以通过在路由中,添加 upstream 对象,达到上述的效果。例如:

  1. curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
  2. -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
  3. {
  4. "methods": ["GET"],
  5. "host": "example.com",
  6. "uri": "/anything/*",
  7. "upstream": {
  8. "type": "roundrobin",
  9. "nodes": {
  10. "httpbin.org:80": 1
  11. }
  12. }
  13. }'
  1. 测试路由。

在创建完成路由后,你可以通过以下命令测试路由是否正常:

  1. curl -i -X GET "http://127.0.0.1:9080/anything/get?foo1=bar1&foo2=bar2" -H "Host: example.com"

该请求将被 APISIX 转发到 http://httpbin.org:80/anything/get?foo1=bar1&foo2=bar2

更多教程

你可以查看保护 API 来保护你的 API。

接下来,你可以通过 APISIX 的一些插件,实现更多功能。