创建一个简单的 API
本教程介绍如何创建一个简单的 API 并对其进行验证。你将完成以下步骤:
前提条件
- 安装 API7 企业版。
- 确保网关组中至少有一个网关实例。
启动一个示例上游服务
如果你想在 Kubernetes 上运行 API7 企业版,你需要将在本节中将一个 httpbin
应用部署到你的 Kunbernetes 集群中作为示例上游服务。否则,请跳到下一节,直接使用托管的 httpbin
应用作为上游。
启动一个 httpbin 应用:
kubectl run httpbin --image kennethreitz/httpbin --port 80
你应该会看到类似以下内容的响应:
pod/httpbin created`
将 httpbin
应用的 80
端口通过服务暴露:
kubectl expose pod httpbin --port 80
你应该会看到类似以下内容的响应:
`service/httpbin exposed`
创建服务与路由
- 控制台
- ADC
- Ingress Controller
创建服务
- 在左侧菜单选择目标网关组下的 已发布服务 菜单,然后点击 新增服务。
- 选择 手动新增。
- 在新增服务表单页中, 执行以下操作:
- 名称 填写
httpbin
。 - 服务类型 选择
HTTP (七层代理)
。 - 上游 Scheme 选择
HTTP
。 - 如何找到上游 选择
使用节点
。 - 点击 新增节点。
- 在新增节点对话框中,执行以下操作:
- 主机 填写
httpbin.org
。 - 端口 填写
80
。 - 权重 填写
100
。
- 主机 填写
- 点击 新增。 此时创建出的新服务处于“无版本”状态。
创建一条路由
- 进入刚才创建好的服务,然后点击 新增路由。
- 在新增路由对话框中,执行以下操作:
- 名称 填写
getting-started-ip
。 - 路径 填写
/ip
。 - HTTP 方法 选择
GET
。 - 点击 新增。
创建如下的配置文件:
adc.yaml
services:
- name: httpbin
upstream:
name: default
scheme: http
nodes:
- host: httpbin.org
port: 80
weight: 100
routes:
- uris:
- /ip
name: getting-started-ip
methods:
- GET
将配置同步到 API7 企业版:
adc sync -f adc.yaml
创建一个包含了 API7 Ingress Controller 路由自定义资源的配置文件:
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: httpbin-route
namespace: api7
spec:
http:
- name: httpbin-route
match:
paths:
- /ip
backends:
- serviceName: httpbin
servicePort: 80
将配置应用到你的集群:
kubectl apply -f httpbin-route.yaml
你应该会看到类似以下内容的响应:
apisixroute.apisix.apache.org/httpbin-route created
验证 API
- 控制台
- ADC
- Ingress Controller
向刚才创建好的路由发送 API 请求:
curl "http://127.0.0.1:9080/ip"
你应该会看到类似以下内容的响应:
{
"origin": "127.0.0.1"
}
向刚才创建好的路由发送 API 请求:
curl "http://127.0.0.1:9080/ip"
你应该会看到类似以下内容的响应:
{
"origin": "127.0.0.1"
}
- 打开控制台,在默认网关组的 已发布服务 菜单中,你应该能看到一个叫做
api7_httpbin_80
的服务。 - 将这个服务的端口通过端口转发的方式在你的本地机器上暴露:
kubectl port-forward svc/api7-ingress-api7-ingress-controller-apisix-gateway 9080:80 &
上述命令会在后台运行,将 api7-ingress-api7-ingress-controller-apisix-gateway
服务的 80
端口 映射到本地机器的 9080
端口。
- 向刚才创建好的路由发送 API 请求:
curl "http://127.0.0.1:9080/ip"
你应该会看到类似以下内容的响应:
{
"origin": "127.0.0.1"
}
恭喜你,现在你的第一个 API 已经成功运行。