本文将快速引导您如何在API网关中,访问后端服务为HTTP协议的服务,并如何使用“阿里云APP”认证中的AppKey和AppSecret进行调用。
前提条件
创建VPC环境,可参见搭建IPv4专有网络和搭建IPv6专有网络。
创建ECS服务器,可参见创建ECS实例。
本例API网关的后端服务选择的是专有网络VPC的ECS实例且ECS实例与API网关region相同,ECS中部署了Apache服务,具体可参见部署Apache服务,使用默认80端口。
方案概览
本篇内容将从创建后端服务开始,逐步介绍如何通过API网关进行后端服务的管理。步骤包括创建API、创建APP并将其与API建立授权关系。我们还将使用在线调试功能来确认API配置的成功,最后会演示如何使用SDK和curl两种方式调用API的过程。
大致分为以下几步:
步骤一:创建后端服务
API网关允许将后端服务配置为region内的资源,简化管理流程。您只需在API网关控制台新建后端服务,并在其环境中配置不同的后端服务地址。随后,在创建API时,直接选用已配置的后端服务即可。
登录API网关控制台,并在顶部菜单栏选择地域。在左侧导航栏的 中,单击右上角创建后端服务。
填写名称为
httpd-online
,类型选择HTTP(s) 服务
后,单击确定。单击进入后端服务名称为
httpd-online
的后端服务,选择线上,单击右上角创建。进行基本信息配置,输入后端服务地址为
http://192.168.*.***:80
,单击发布。说明http://192.168.*.***:80
为创建ECS实例的私网IP地址。
步骤二:创建分组
API分组是API的管理单元,因此需要先创建API分组,然后在分组下创建API。
在分组列表查看创建的分组,单击分组名称可以进入到分组详情页,进行绑定域名、修改基本信息、变更分组实例等操作。
API分组会自动分配公网二级域名,此二级域名仅供调试使用,如果直接访问此域名,每天有1000次的限制(海外Region及中国香港限制100次/天)。因此建议为分组绑定自己的独立域名后使用。
在左侧导航栏的
中,单击右上角创建分组。选择实例,输入分组名称为
httpd-demo
,BasePath为/
,单击确定。
步骤三:创建API
在左侧导航栏的
中,单击所创建的httpd-demo
分组操作列下的API管理。在API列表页面,单击右上角创建API。
进行基本信息配置,配置如下信息,单击下一步。
配置项
示例值
分组
httpd-demo
API名称
httpd-test
安全认证
阿里云APP
AppCode认证
允许APPcode(header&Query)认证
签名算法
HMAC_SHA256
进行定义API请求配置,配置如下信息,单击下一步。
说明定义客户端(如浏览器、手机APP或其他的业务系统)如何请求您的API,需要确定的内容包括请求协议、请求Path、HTTP Method、入参请求模式和入参定义。在本例中,入参请求方式选择入参透传,表示客户端发送过来的参数API网关不做处理,直接透传给后端。
进行定义API后端服务配置,配置如下信息,单击下一步。
说明定于API网关收到客户端的请求后,进行何种参数映射、处理方式,以及连接到后端地址。本例中,选择了后端服务类型为HTTP(S)服务。
配置项
示例值
后端配置
选择使用已有的后端服务
后端服务类型
选择HTTP(s)服务
后端服务
httpd-online
后端请求Path
/
HTTP Method
GET
后端超时
10000
在定义返回结果栏,单击创建。
在创建成功后弹框中,单击发布。
在发布弹框中,发布的环境选择线上,输入请填写变更备注,单击发布。
说明对API进行过修改后,都需要发布到对应的环境,API网关内置了三个环境(线上、预发、测试),发布配置才能生效。
步骤四:创建应用和API授权
应用(APP)是调用API服务时的身份。在本例创建API时,认证方式选择的是“阿里云APP认证”,因此在API发布后,还需要创建APP,并将APP和API的授权关系建立好,才能够正常访问。
创建应用
在左侧导航栏的
中,单击右上角创建APP。输入应用名称,单击确定。
在左侧导航栏的应用管理中,单击已创建好的
httpd
应用名称,进入应用详情页面,可以看到阿里云APP下有两种认证方式,AppKey
和AppCode
。AppKey
方式有一组AppKey
和AppSecret
,您可以理解为账号密码,调用API的时候需要将AppKey
做为参数传入,AppSecret
用于签名计算,网关会校验这对密钥对您进行身份认证。
对API进行授权
在左侧导航栏的
中,单击目标http-test
API操作列的授权。选择选择要授权的环境为线上。搜索之前创建的应用,单击添加并确定,提示授权成功,即成功授权。
步骤五:调试API
API网关提供了在线调试的功能,因此一般建议在API网关上完成API配置之后,先通过此功能确认API是否配置成功,然后再通过客户端进行调用。
在左侧导航栏的
中,选择所创建的httpd-test
API,验证方式选择使用AppSecret,然后单击发送请求。看到如下图所示的调用结果信息,说明配置成功。
步骤六:调用API
通过以上步骤,您已经创建API、创建APP、建立了授权关系,调试API完成,并将API发布到线上环境,下面介绍如何通过调用API网关提供的SDK,来在您的业务系统中调用发布好的API。
使用SDK调用API
在左侧导航栏的
中,选择进入其他语言签名代码示例(示例仅供参考)为Node.js的查看Node.js版签名代码示例。通过npm安装API网关的Node.js示例SDK,
$ npm install aliyun-api-gateway -S
。在如下的代码片段中,将
YOUR_APP_KEY
和YOUR_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****"