发布你的第一个 API
本教程介绍了如何在 API7 企业版上发布并验证一个简单的 API。你将完成以下步骤:
- 创建一个已发布的服务(Published Service),其中包含一个路由(Route)和一个指向
httpbin的上游(Upstream)。 - 通过发送请求来验证所创建的 API。
前提条件
- 安装 API7 企业版。
- 根据你的环境部署一个网关实例:
- 若要在 Kubernetes 上部署 API7 网关并使用 Ingress Controller,请完成在 Kubernetes 上部署网关和 Ingress Controller。
- 若要在 Docker 中部署 API7 网关,请遵循添加网关实例中的 Docker 指南。
创建服务和路由
- 控制台 (Dashboard)
- ADC
- Ingress Controller
创建服务
- 在侧边导航栏中,选择你的网关组下的已发布服务,然后点击新增服务。
- 选择手动新增。
- 在添加服务对话框中,执行以下操作:
- 在名称字段中,输入
httpbin。 - 在服务类型字段中,选择
HTTP (七层)。 - 在默认上游字段中,填写名称。
- 在如何找到上游字段中,选择
使用节点。 - 点击使用节点。
- 在新增节点对话框中,执行以下操作:
- 在主机字段中,输入
httpbin.org。 - 在端口字段中,输入
80。 - 在权重字段中,输入
100。
- 在主机字段中,输入
- 在名称字段中,输入
- 点击新增。这将创建一个处于“无版本”状态的新服务。
创建路由
- 点击在上一步中刚刚创建的服务,然后点击新增路由。
- 在新增路由对话框中,执行以下操作:
- 在路由名称字段中,输入
get-ip。 - 在路径字段中,输入
/ip。 - 在请求方法字段中,选择
GET。 - 点击新增。
- 在路由名称字段中,输入
下面是一个交互式演示,提供了创建无版本服务的动手介绍。点击并按照步骤操作,你将更好地了解如何在 API7 企业版中使用它。
创建以下配置文件:
adc.yaml
services:
- name: httpbin
upstream:
name: default
scheme: http
nodes:
- host: httpbin.org
port: 80
weight: 100
routes:
- uris:
- /ip
name: get-ip
methods:
- GET
将配置同步到 API7 企业版:
adc sync -f adc.yaml
当使用 API7 Ingress Controller 时,建议使用 Gateway API 而不是 Ingress 资源,以获得更高的灵活性和可扩展性。
为了将请求转发到 httpbin.org,请创建一个用于路由的清单文件(此操作同时也会创建一个服务):
- Gateway API
- Ingress
- APISIX CRD
httpbin-route.yaml
apiVersion: v1
kind: Service
metadata:
namespace: api7
name: httpbin-external-domain
spec:
type: ExternalName
externalName: httpbin.org
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
namespace: api7
name: getting-started-ip
spec:
parentRefs:
- name: apisix
rules:
- matches:
- path:
type: Exact
value: /ip
backendRefs:
- name: httpbin-external-domain
port: 80
httpbin-route.yaml
apiVersion: v1
kind: Service
metadata:
namespace: api7
name: httpbin-external-domain
spec:
type: ExternalName
externalName: httpbin.org
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: api7
name: getting-started-ip
spec:
ingressClassName: apisix
rules:
- http:
paths:
- path: /ip
pathType: Exact
backend:
service:
name: httpbin-external-domain
port:
number: 80
httpbin-route.yaml
apiVersion: apisix.apache.org/v2
kind: ApisixUpstream
metadata:
namespace: api7
name: httpbin-external-domain
spec:
ingressClassName: apisix
externalNodes:
- type: Domain
name: httpbin.org
---
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
namespace: api7
name: getting-started-ip
spec:
ingressClassName: apisix
http:
- name: getting-started-ip
match:
paths:
- /ip
upstreams:
- name: httpbin-external-domain
将配置应用到你的集群:
kubectl apply -f httpbin-route.yaml
验证 API
在控制台中,你应该会在已发布服务下看到新创建的服务。
- 控制台 (Dashboard)
- ADC
- Ingress Controller
向路由发送请求:
curl "http://127.0.0.1:9080/ip"
你应该会看到以下响应:
{
"origin": "127.0.0.1"
}
向路由发送请求:
curl "http://127.0.0.1:9080/ip"
你应该会看到以下响应:
{
"origin": "127.0.0.1"
}
首先,通过端口转发将服务端口暴露给你的本地机器:
kubectl port-forward svc/apisix-gateway 9080:80 &
上述命令在后台运行,并将 api7-ee-3-gateway-gateway 服务的 80 端口映射到本地机器的 9080 端口。
向路由发送请求:
curl "http://127.0.0.1:9080/ip"
你应该会看到类似于以下的响应:
{
"origin": "127.0.0.1"
}
就是这样。现在你已经成功运行了你的第一个 API。
通过导入 OpenAPI 添加 API
你还可以通过导入 OpenAPI 3.0 规范来添加 API。创建服务的步骤如下:
- 在侧边导航栏中选择网关组下的已发布服务,然后点击新增服务。
- 选择导入 OpenAPI。
- 在新增服务对话框中,执行以下操作:
- 在OpenAPI 3.0 规范字段中,上传
httpbin.yaml文件。 - 在上游名称和服务类型字段中,保持默认设置
HTTP(七层)。 - 在如何找到上游字段中,保持默认设置
使用节点。 - 点击新增节点。
- 在新增节点对话框中,执行以下操作:
- 在主机字段中,输入
httpbin.org。 - 在端口字段中,输入
80。 - 在权重字段中,输入
100。
- 在主机字段中,输入
- 点击新增。
- 在OpenAPI 3.0 规范字段中,上传
- 点击下一步。这将创建一个处于“无版本”状态的新服务。基本信息和标签将被导入,并且 OpenAPI 文件中的所有路径都将转换为该服务中的路由。
下面是一个交互式演示,提供了通过导入 OpenAPI 添加服务的动手介绍。点击并按照步骤操作,你将更好地了解如何在 API7 企业版中使用它。