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