# 快速入门

本指南的目的是介绍如何使用 智能网关 来配置出一个安全的可以对外提供服务的 API。 当您读完本指南,你需要自己安装一下 智能网关 应用,并准备好一个可以对外提供服务的 API,该服务将由 API key 进行访问保护。

本指南会使用到以下 GET 请求,原服务接口 10.130.32.27:10080/v1/advert/position

$ curl --location --request GET "https://api.liulimi.com/data/v1/advert/position?channel_id=1"

让我们来分析一下这个 URL 请求

  • Scheme: HTTPS
  • Host/Address: api.liulimi.com
  • Port: 443
  • URI: /data/v1/advert/position
  • Query Parameters: channel_id

# 前提

本指南使用 docker 和 docker compose 来安装 智能网关。 但是, 如果您已经以其他方式安装了 智能网关 ,您只需跳到 第二步 。

# 第一步: 安装 智能网关

智能网关 可以多种操作环境中安装。如何安装文档 显示了多个平台中的安装步骤。 为了快速入门,让我们基于 docker 容器的安装方式进行安装。

# 第二步: 在 智能网关 中创建 Route

# 设置 Upstream

Upstream 是一个虚拟主机抽象,它根据配置规则在给定的一组服务节点上执行负载平衡。 因此,单个上游配置可以由提供相同服务的多个服务器组成。每个节点将包括一个 key(地址/ip:port)和一个 value (节点的权重)。 服务可以通过轮询或一致哈希(cHash)机制进行负载平衡。

配置路由时,可以直接设置 Upstream 信息,也可以使用服务抽象来引用 Upstream 信息。

执行以下命令在 智能网关 中创建 id 为 50 的上游信息,并使用 round-robin 机制进行负载平衡。

curl "http://127.0.0.1:9080/apisix/admin/upstreams/50" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "type": "roundrobin",
    "nodes": {
        "10.130.32.27:10080": 1
    }
}'

# 设置服务

执行以下命令在 智能网关 中创建 id为 5 的服务,并设置proxy-rewrite插件功能

curl "http://127.0.0.1:9080/apisix/admin/services/5" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "name": "data-service",
    "desc": "数据服务",
    "plugins": {
        "proxy-rewrite": {
            "disable": false,
            "regex_uri": [
                "^/data/(.*)",
                "/$1"
            ]
        }
    },
    "upstream_id": 50
}'

# 设置路由

  • 控制台界面操作

    • 1、路径: /data/*
    • 2、自定义重定向:/*,301永久重定向
    • 3、服务选择 data-service,即上一步设置服务名称
  • 执行以下命令在 智能网关 中创建 id为 25 的路由

curl "http://127.0.0.1:9080/apisix/admin/routes/25" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "name": "data-service",
    "version": "0.0.1",
    "plugins": {
        "redirect": {
          "uri": "\/*",
          "ret_code": 301
        }
    },
    "labels": {
    "API_VERSION": "0.0.1"
    },
    "desc": "数据服务接口",
    "methods": [
        "GET",
        "HEAD",
        "POST",
        "PUT",
        "DELETE",
        "OPTIONS",
        "PATCH"
    ],
    "uris": [
        "\/data\/*"
    ],
    "service_id": 5
}'

# 接口测试

整个请求过程为: 判断到/data开头 路由,301重定向 到data-service服务 proxy-rewrite代理重写将/data/{$1}参数透传到 上游(Upstream) 真实接口。 结果如下:

{
    "code": 200,
    "message": "操作成功",
    "data": [
        {
            "id": 1,
            "name": "首页Banner",
            "flag": "home_banner",
            "desc": "首页Banner",
        }
    ],
    "timestamp": 1613536828
}
最后更新: 2/17/2021, 6:41:38 PM