API 网关的配置

  1. 利用工程发布的配置,将 我们前面章节中写的服务消费者工程上传至Git,然后发布 部署至 服务器的Tomcat上。
  2. 登录 Aliyun 账户,进入 API网关控制台,点击 分组管理 - 杭州节点,点击创建分组,填写分组名称与描述,点击创建。
  3. 点击刚刚创建的分组,进入分组详情,如需绑定域名,请点击页面上的绑定域名,并对域名的CNAME 进行解析。
  4. 在分组列表页面上,点击 API 管理,对当前分组下的API进行操作。
  5. 点击创建API,我们新建一个API。 创建一个API,分为一下几个步骤。
    • 定义基本信息。
    • 定义API 请求,填写调用此API 时需要的请求信息。
    • 定义API 后端服务,这一步定义了调用后端真正的API时的信息。 有必要说明,常量参数和系统参数 这两个定义。这两种参数API的请求者不可见,由网关在请求后端服务时添加上 常量参数。比如我后端需要接收一个常量,但是这个常量我不喜欢被我的客户看见,那么我就设置一个常量参数,可以在Header或者Query里面接收。 系统参数。比如我需要获取客户调用API时用的APP的ID来做日志统计,我在系统参数配置,可以在Header或者Query里面接收。强烈建议后端接收CaRequestId字段,每个请求一个ID唯一,便于问题定位和建立全量日志。
    • 定义返回结果。
    • 点击保存,在API定义中 即可看到我们刚刚创建的API 的信息。

API 网关的调用

发布API

在API 定义 的界面中,点击发布,选择发布到测试环境,填写发布内容,点击发布。

使用调试API 工具进行调用

这个工具是 API网关针对 开发人员的调试工具,非常的简单易用。

  1. 在左边栏 中点击调试API
  2. 输入对应的参数,点击发送请求,在右边控制台上即可看到调用结果。
    使用代码进行调用
    如果上面的调试工具调用成功,下面我们即可在代码中对此接口进行调用。
  3. 创建应用,在调用API - 应用管理中点击创建应用。
  4. 点击进应用详情,获取到 APP ID和APP SCRECT。
  5. 到API 管理,授权信息中点击添加授权 通过APP ID 搜索对刚刚创建的API进行授权。
  6. 我们使用API 网关 提供的官方DEMO,对此API 进行调用。
  7. 将代码Clone 下来之后,通过Maven构建导入IDEA,·我们找到 test 模块中的 Demo 类,点击进入。
  8. 修改DEMO 类中的 HOST,APP ID, APP SCRECT。
  9. 因为我们刚刚定义的工程是GET 方法,所以我们对 DEMO 单元测试中的get() 方法进行修改。

        /**
          * HTTP GET
          *
          * @throws Exception
          */
         @Test
         public void get() throws Exception {
             //请求path
             String path = "/helloDubbo";
    
             Map<String, String> headers = new HashMap<String, String>();
             //(必填)根据期望的Response内容类型设置
             headers.put(HttpHeader.HTTP_HEADER_ACCEPT, "application/json");
             headers.put("X-Ca-Stage","TEST");
             headers.put("X-Ca-Version","1");
    
             Request request = new Request(Method.GET, HttpSchema.HTTP + HOST, path, APP_KEY, APP_SECRET, Constants.DEFAULT_TIMEOUT);
             request.setHeaders(headers);
    
             //请求的query
             Map<String, String> querys = new HashMap<String, String>();
             querys.put("region", "test");
             request.setQuerys(querys);
    
             //调用服务端
             Response response = Client.execute(request);
    
             System.out.println(JSON.toJSONString(response));
         }
    
  10. 点击运行 get()方法,在控制台中即可查看到运行结果,在body 中,我们已经看到了 接口返回的 Hello, Dubbo!。