全部产品
Search
文档中心

API 网关:通过API网关访问HTTP协议的后端服务

更新时间:Nov 27, 2024

本文将快速引导您如何在API网关中,访问后端服务为HTTP协议的服务,并如何使用“阿里云APP”认证中的AppKey和AppSecret进行调用。

前提条件

说明

本例API网关的后端服务选择的是专有网络VPC的ECS实例且ECS实例与API网关region相同,ECS中部署了Apache服务,具体可参见部署Apache服务,使用默认80端口。

方案概览

本篇内容将从创建后端服务开始,逐步介绍如何通过API网关进行后端服务的管理。步骤包括创建API、创建APP并将其与API建立授权关系。我们还将使用在线调试功能来确认API配置的成功,最后会演示如何使用SDK和curl两种方式调用API的过程。

大致分为以下几步:

  1. 创建后端服务:将后端服务配置为API网关所在地域内的资源,您可以在创建API时直接选择已配置的后端服务。

  2. 创建分组:作为API的管理单元,能更好地对API进行分类管理,提供更清晰的组织架构。

  3. 创建API:在API网关控制台上执行创建API操作,实现对API的创建。

  4. 创建应用和API授权:创建应用(APP)作为调用API服务时的身份,并建立与API的授权关系,以确保在API发布后能够正常访问。

  5. 调试API:使用API网关提供的在线调试功能,验证API的配置是否成功。

  6. 调用API:您可以使用API网关提供的SDK,以及curl命令行工具调用线上环境发布的API,实现业务系统中对API的调用操作。

步骤一:创建后端服务

API网关允许将后端服务配置为region内的资源,简化管理流程。您只需在API网关控制台新建后端服务,并在其环境中配置不同的后端服务地址。随后,在创建API时,直接选用已配置的后端服务即可。

  1. 登录API网关控制台,并在顶部菜单栏选择地域。在左侧导航栏的API管理 > 后端服务中,单击右上角创建后端服务

  2. 填写名称httpd-online类型选择HTTP(s) 服务后,单击确定

  3. 单击进入后端服务名称为httpd-online 的后端服务,选择线上,单击右上角创建

    image

  4. 进行基本信息配置,输入后端服务地址为http://192.168.*.***:80,单击发布

    说明

    http://192.168.*.***:80 为创建ECS实例的私网IP地址。

    image

步骤二:创建分组

API分组是API的管理单元,因此需要先创建API分组,然后在分组下创建API。

说明
  • 分组列表查看创建的分组,单击分组名称可以进入到分组详情页,进行绑定域名修改基本信息变更分组实例等操作。

  • API分组会自动分配公网二级域名,此二级域名仅供调试使用,如果直接访问此域名,每天有1000次的限制(海外Region及中国香港限制100次/天)。因此建议为分组绑定自己的独立域名后使用。

  1. 在左侧导航栏的API管理 > 分组管理中,单击右上角创建分组

  2. 选择实例,输入分组名称httpd-demoBasePath/,单击确定

    image

步骤三:创建API

  1. 在左侧导航栏的API管理 > 分组管理中,单击所创建的httpd-demo分组操作列下的API管理

  2. API列表页面,单击右上角创建API

  3. 进行基本信息配置,配置如下信息,单击下一步

    image

    配置项

    示例值

    分组

    httpd-demo

    API名称

    httpd-test

    安全认

    阿里云APP

    AppCode认证

    允许APPcode(header&Query)认证

    签名算法

    HMAC_SHA256

  4. 进行定义API请求配置,配置如下信息,单击下一步

    说明

    定义客户端(如浏览器、手机APP或其他的业务系统)如何请求您的API,需要确定的内容包括请求协议、请求Path、HTTP Method、入参请求模式和入参定义。在本例中,入参请求方式选择入参透传,表示客户端发送过来的参数API网关不做处理,直接透传给后端。

    image

  5. 进行定义API后端服务配置,配置如下信息,单击下一步

    说明

    定于API网关收到客户端的请求后,进行何种参数映射、处理方式,以及连接到后端地址。本例中,选择了后端服务类型为HTTP(S)服务。

    image

    配置项

    示例值

    后端配置

    选择使用已有的后端服务

    后端服务类型

    选择HTTP(s)服务

    后端服务

    httpd-online

    后端请求Path

    /

    HTTP Method

    GET

    后端超时

    10000

  6. 定义返回结果栏,单击创建

  7. 在创建成功后弹框中,单击发布

    image

  8. 在发布弹框中,发布的环境选择线上,输入请填写变更备注,单击发布

    说明

    对API进行过修改后,都需要发布到对应的环境,API网关内置了三个环境(线上预发测试),发布配置才能生效。

    image

步骤四:创建应用和API授权

应用(APP)是调用API服务时的身份。在本例创建API时,认证方式选择的是“阿里云APP认证”,因此在API发布后,还需要创建APP,并将APP和API的授权关系建立好,才能够正常访问。

创建应用

  1. 在左侧导航栏的API调用 > 应用管理中,单击右上角创建APP

  2. 输入应用名称,单击确定

    image

  3. 在左侧导航栏的应用管理中,单击已创建好的httpd应用名称,进入应用详情页面,可以看到阿里云APP下有两种认证方式,AppKeyAppCodeAppKey方式有一组AppKeyAppSecret,您可以理解为账号密码,调用API的时候需要将AppKey做为参数传入,AppSecret用于签名计算,网关会校验这对密钥对您进行身份认证。

    image

对API进行授权

  1. 在左侧导航栏的API管理 > API列表中,单击目标http-testAPI操作image授权

  2. 选择选择要授权的环境线上。搜索之前创建的应用,单击添加确定,提示授权成功,即成功授权。

    image

步骤五:调试API

API网关提供了在线调试的功能,因此一般建议在API网关上完成API配置之后,先通过此功能确认API是否配置成功,然后再通过客户端进行调用。

  1. 在左侧导航栏的API调用 > 调试中,选择所创建的httpd-testAPI,验证方式选择使用AppSecret,然后单击发送请求

  2. 看到如下图所示的调用结果信息,说明配置成功。

    image

步骤六:调用API

通过以上步骤,您已经创建API、创建APP、建立了授权关系,调试API完成,并将API发布到线上环境,下面介绍如何通过调用API网关提供的SDK,来在您的业务系统中调用发布好的API。

使用SDK调用API

  1. 在左侧导航栏的API调用 > SDK中,选择进入其他语言签名代码示例(示例仅供参考)Node.js查看Node.js版签名代码示例

  2. 通过npm安装API网关的Node.js示例SDK,$ npm install aliyun-api-gateway -S

    在如下的代码片段中,将YOUR_APP_KEYYOUR_APP_SECRET填写为本例中创建的APPKey的对应信息。

    // 导入网关nodejs sdk
    const Client = require('aliyun-api-gateway').Client;
    // 实例化一个认证对象,入参需要传入授权应用的AppKey,AppSecret
    const client = new Client('YOUR_APP_KEY','YOUR_APP_SECRET');
    async function get() {
    // API分组的域名,测试阶段可以使用公网二级域名,但有一定的访问限制,建议正式环境绑定您的独立域名
      var url = 'YOUR_GROUP_DOMAIN';
      var result = await client.get(url, {
    //请求响应体类型部分 API 可以根据指定的响应类型来返回对应数据格式,建议手动指定此请求头 
        headers: {
          accept: 'application/json'
        },
      });
      console.log(JSON.stringify(result));
    }
    get().catch((err) => {
      console.log(err.stack);
    });                

使用curl调用API

在左侧导航栏的API调用 > 应用管理中,找到授权的APP,单击进入获取APPCode。然后按照以下示例调用API。

curl -i -X GET "http://3fbf0648d01e4aa5a1d*******-cn-hangzhou.alicloudapi.com" -H "Authorization:APPCODE c404eca23959492b9f0e4d4d15****"

image