资讯动态
开发者中心
关于我们
联系客服

产品概述

API网关(API Gateway),提供API托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等API各个生命周期阶段,帮助您快速建设以API为核心的系统架构。

  • 构建中台。通过API网关强大的适配和集成能力,可以将各种业务系统的API实现统一管理和统一调用:

    • 支持异构网络环境:无论您的业务系统部署在阿里云、本地数据中心、或其他云,API网关均可以统一管理;

    • 支持对接多种系统实现方式:您的业务系统基于ECS、基于函数计算、基于微服务等方式实现;

    • 支持AI能力输出:您可以将PAI(机器学习平台)上的完成的模型、算法,以API形态通过API网关发布,供各个业务系统进行调用;

    • 支持数据大屏:您可以直接在DataV(数据可视化)上直接调用API网关发布的API,实现数据的可视化展示。

  • 构建各种技术架构。

    • Serverless架构。函数计算和API网关的联姻让众多开发者看到可以大展身手的代码空间,快速构建低成本、高可用、实时弹性伸缩的后端服务。业务触角延展到移动端、WEB端、物联网、云市场等多个数据来源,扩展业务无限可能,扩展商业无限边界,增加了产品组合的灵活度和柔韧度。

    • 微服务架构。API网关作为成熟的云产品,放在Kubernetes集群前面作为应用集群的接入服务使用,将大大提高Kubernetes集群的服务能力,可以作为标准的大型互联网应用的标准架构。

    • 前后台分离架构。在大规模的前后台分离架构中,需要由API网关承载起API认证、调度、路由职责,并且通过集群化的部署模式来解决高性能和大规模使用的问题。

  • 构建生态。企业在经营过程中,会需要上下游合作伙伴的诸多业务协作。通过开放API,可以大大提高各个环节的协作效率,促成更加健康的商业生态。

产品优势

  • 解放生产力

    • 托管式PaaS产品,围绕API生命周期的各个阶段提供生产力工具,大大提高API管理、运维效率,降低日常维护成本。

  • 高性能高可靠
    • 分布式部署,承载大规模访问,低延迟处理。

  • 安全

    • 提供全链路API安全保障方案。API网关提供了API认证、参数清洗、全链路签名、CA证书、访问控制、流量控制、内网访问等多种安全机制,并且可以与WAF、DDoS高防IP、IDaaS等结合使用,形成全链路API安全保障方案。

  • 丰富的集成能力

    • 与小讯鸽的计算产品、大数据产品、AI产品、数据可视化产品等深度集成,快速构建您的业务。

  • 多种计费方式

    • 丰富多样的计费方式,满足各种使用场景。共享实例按调用量计费,适用于研发测试场景;专享实例按性能容量和使用时长计费,提供更高的SLA,适用于正式生产环境。

功能概览

API网关支持以下功能

  • API 生命周期管理

    • 覆盖设计、开发、测试、发布、运维监测、安全管控、下线等API各个生命周期阶段,API网关为每个阶段提供生产力工具;

  • 协议处理

    • 支持HTTPS、SSL卸载、支持HTTP2.0、客户端websocket接入、双向通信;

    • 支持通过泛域名调用API;

  • 请求转发

    • 支持参数清洗,包括参数类型、参数值(范围、枚举、正则)校验,无效校验会被 API 网关直接拒绝;

    • 支持参数映射,实现前端、后端请求信息映射;

  • 安全防护支持多种认证方式

    • 支持 HMAC (SHA-1,SHA-256) 算法签名;

    • 支持HTTPS双向认证、全链路CA证书、全链路签名验证;

    • 支持IP访问控制;支持参数访问控制,可针对HTTP请求、应答或系统上下文中获取参数,并使用自定义的条件表达式对参数内容进行访问控制;

    • 请求防重放、请求防篡改、跨域访问,并与WAF、高防IP高效集成,形成全链路API防护体系;

  • 集成能力

    • 支持多种后端服务类型,包括HTTP(s)服务、模拟(Mock)、VPC内资源、函数计算等,可有效对接现有业务系统;

    • 支持VPC内网访问;

    • 支持混合云管理,对云上资源、云下资源的API进行统一管控;

  • 发布和路由

    • 提供API发布管理,线上版本一键切换;

    • 支持多环境管理,满足日常研发、预发测试、生产环境并行使用需求;

    • 支持灰度发布功能;

    • 支持参数路由,可根据HTTP请求内容创建不同的路由转发规则,提高系统灵活性;

  • API可用性

    • 支持API应答内容缓存,提高访问效率,减轻后端服务压力;

    • 提供默认断路器和自定义降级策略配置,避免极端情况下雪崩效应;

    • 支持精细化的流量控制,既能粗粒度的针对API访问频率、APP的请求频率进行流控设置,也能可针对HTTP请求、系统上下文中获取参数并加以逻辑判断,进行参数流控;

  • 监控告警

    • 快速设置,将API调用日志投递到日志服务(SLS)中,从而实现全量日志的查询分析;

    • 提供仪表盘对API调用情况进行监控,包括调用量、响应时间、错误率等,快速了解当前API情况;

    • 支持设置不同的告警条件,在API调用发生异常时,能够及时通过短信等方式通知管理员;

  • 调试和调用

    • 提供可视化的界面调试工作;

    • 支持API调用跟踪,追踪API执行全过程,快速追查排错;

    • 支持自动生成多种语言SDK,生成API说明文档,降低客户端API调用门槛;

  • 持续集成

    • 提供API网关的全量管控API;

    • 支持swagger导入导出,支持swagger 2.0标准,结合管控API,可有效与您的运维系统、CICD系统对接;

    • 支持Terraform编排;

创建后端服务为HTTP的API

1 概述

本文将快速引导您如何在API网关中,发布后端服务为HTTP类型的API,并如何使用”小讯鸽”认证中的AppKey和AppSecret进行调用。

您需要依次完成以下步骤:

  • 创建分组;

  • 定义API;

  • 创建应用和API授权;

  • 调试API;

  • 调用API。

2 创建分组

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

步骤1 创建分组

开放API菜单中选择分组管理,选择Region,点击创建分组;在弹窗页面,选择分组实例,输入分组名称testAppkeyGroup,实例选择”共享实例(VPC)”;

步骤2 查看分组信息

在分组列表查看创建好的分组,点击名称可以进入到详情页,进行绑定域名、修改基本信息、切换实例类型等动作。

API分组会自动创建 公网二级域名 ,此二级域名仅供调试使用,如果直接访问此域名,每天有 1000次 的限制。因此建议您在使用时为分组绑定您的 独立域名 后使用。在本示例中使用此域名进行测试。

3 创建API

开放API菜单中选择API管理,在上一步中创建的API分组所在Region,点击创建API。

步骤3 API基本信息

本环节是定义了API基本信息,包括 API 分组、 API 名称、安全认证方式、 API 类型、和描述等。选择刚刚创建的分组testAppkeyGroup,写入对应配置。

步骤4 定义API请求

本环节是定义client端(如浏览器、手机APP或其他的业务系统)如何请求您的API,需要确定的内容包括请求类型、协议、请求Path、HTTP Method、入参请求模式、和入参定义。在本例中,请求path中配置”/web/cloudapi”,并且未配置任何的入参。

步骤5 定义API后端服务信息

本环节是定于API网关收到client端的请求后,进行何种参数映射、处理,以及连接哪个后端地址。本例中的后端服务类型选择HTTP(s)服务,此后端服务可以在小讯鸽上或者互联网上的任何可以访问到的地址,其他的后端服务类型可以参考其他帮助文档。按照页面要求完成后端地址、请求Path信息。

步骤6 定义返回结果

本环节用于API帮助文档的自助生成,帮助API使用者更好理解。可以设置返回ContentType、返回结果示例和失败返回结果示例。本例中不涉及到这部分,因此可以点击保存按钮

步骤7 发布API

在上一环节保存成功后,会提示如下信息。您对API进行过任何的配置,都需要发布到对应的环境(API网关内置了三个环境:”线上”、”预发”、”测试”)中才能够生效。本例中,点击发布,按照控制台页面的提示,把此API发布到”线上”环境。

4 API授权

步骤8 对API进行授权

API列表,找刚创建好的API,在操作项中,点击授权,出现如下的弹出框。注意环境需要选择已经进行了发布的环境,如本例中的”线上”。搜索之前创建的应用,点击添加;点击确定,提示授权成功,即成功授权;

5 调试API

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

步骤9 调试API

API列表页,点击前面步骤中新增的API,进入详情页,点击调试API进入如下页面。如果您定义了API的入参,在调试API页面中也可以输出不同的参数查看API的执行情况。

在调试API中,注意认证方式选择已经授权的APP,并且stage选择此APP授权好的环境,如果选择错误的stage,可能会造成API调试失败。本例中选择RELEASE(线上)。

6 调用API

通过上述步骤,您已经创建API、建立了授权关系,调试API完成,并将API发布到线上环境,本阶段将会模拟如何通过调用API网关提供的SDK,来在您的业务系统中调用发布好的API。

步骤10 调用API

调用API菜单中找到已授权API的SDK,可以下载到此应用的SDK,或其他语言调用示例。


本例中,以Node.js的SDK示例为例,继续介绍如何调用。

首先通过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);
 });


创建后端为函数计算的API

1 概述

本文将快速引导您如何在API网关中,发布后端服务为函数计算类型的API,并进行调用。

您需要依次完成以下步骤:

  • 创建函数;

  • 创建分组;

  • 定义API;

  • 创建应用和API授权;

  • 调试API;

  • 调用API。

2 创建函数

函数计算是一个事件驱动的服务。函数的执行可以由事件驱动,即当某个事件发生时,该事件触发函数的执行。现在,函数计算支持以API网关作为事件源。当请求设置函数计算为后端服务的API 时,API网关会触发相应的函数,函数计算会将执行结果返回给API网关。

步骤1 在函数计算中选择apigateway模板

进入函数计算控制台后,选择函数所在地域,在服务-函数模块进行创建,您可以在模板函数选择对应模板 api-gateway-nodejs6 ,此模板为一个和API网关对接的示例模板,进入下一步。

步骤2 配置函数

更多函数配置,可参考函数计算的相关文档,本示例并未进行过多的设置,如下图所示。

3 创建分组

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

步骤3 创建分组

在开放API菜单中选择分组管理,选择Region,点击创建分组;在弹窗页面,选择分组实例,输入分组名称testFunctionGroup,实例选择”共享实例(VPC)”。注意API网关的分组需要和函数计算处于 同一Region 。

步骤4 查看分组信息

在分组列表查看创建好的分组,点击名称可以进入到详情页,进行绑定域名、修改基本信息、切换实例类型等动作。

4 创建API

在开放API菜单中选择API管理,在上一步中创建的API分组所在Region,点击创建API。

步骤3 API基本信息

本环节是定义了API基本信息,包括 API 分组、 API 名称、安全认证方式、 API 类型、和描述等。选择刚刚创建的分组,写入对应配置,安全认证主要选择 APPcode(header & Query)认证 。

步骤4 定义API请求

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

步骤5 定义API后端服务信息

本环节是定于API网关收到client端的请求后,进行何种参数映射、处理,以及连接哪个后端地址。本例中的后端服务类型选择 函数计算 ,输入前面步骤中创建的函数服务名称,函数名称,点击获取授权,进行下一步。

步骤6 定义返回结果

本环节用于API帮助文档的自助生成,帮助API使用者更好理解。可以设置返回ContentType、返回结果示例和失败返回结果示例。本例中不涉及到这部分,因此可以点击保存按钮

步骤7 发布API

在上一环节保存成功后,会提示如下信息。您对API进行过任何的配置,都需要发布到对应的环境(API网关内置了三个环境:”线上”、”预发”、”测试”)中才能够生效。本例中,点击发布,按照控制台页面的提示,把此API发布到”线上”环境。

5 API授权

步骤8 对API进行授权

在API列表,找刚创建好的API,在操作项中,点击授权,出现如下的弹出框。注意环境需要选择已经进行了发布的环境,如本例中的”线上”。搜索之前创建的应用,点击添加;点击确定,提示授权成功,即成功授权;

6 调试API

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

步骤9 调试API

在API列表页,点击前面步骤中新增的API,进入详情页,点击调试API进入如下页面。如果您定义了API的入参,在调试API页面中也可以输出不同的参数查看API的执行情况。

在调试API中,注意认证方式选择已经授权的APP,并且stage选择此APP授权好的环境,如果选择错误的stage,可能会造成API调试失败。本例中选择RELEASE(线上)。

API返回内容为前面步骤中创建的函数返回内容,函数代码如下:

函数代码

7 调用API

通过上述步骤,您已经创建API、创建APP、建立了授权关系,调试API完成,并将API发布到线上环境,本阶段将会模拟如何使用APPCode的认证方式来在您的业务系统中调用发布好的API。

步骤10 调用API

本例中使用curl进行调用。

执行效果如下图所示:

调用API




创建API

创建 API 即录入 API 的定义,需要录入 API 的基本信息、服务信息、请求信息、和返回信息,然后对创建的 API 进行调试,及进行安全配置。经测试证明 API 可用后,可发布上线供用户使用。

定义 API

在 API 网关控制台中 API 列表 页面,单击 创建 API,即进入 API 的创建和定义流程。

第一部分:定义请求的基本信息

API 基本信息包括 API 分组、 API 名称、安全认证方式、 API 类型、和描述。

  • API 分组:分组是 API 的管理单元。创建 API 之前,您需要先创建分组( API 分组的详细说明见 API 开放)。

  • API 名称:API 名称标识需在所属分组内具有唯一性。

  • 安全认证方式:是 API 请求的认证方式,目前支持 阿里云APPOpenID Connect 、OpenID Connect & 阿里云APP 和 无认证 四种认证方式。

    • 无认证:即任何人知晓该 API 的请求定义后,均可发起请求,网关不对其做身份验证,均会将请求转发至您的后端服务。(强烈不建议使用此模式。)

  • API 类型:分为 公开 和 私有 两种。

    • 公开 类型的 API:所有用户均可以在 API 网关控制台,已发布 API 页面看到 API 的部分信息。公开 类型的 API 会跟随 API 分组上架到云市场,供用户购买和调用。

    • 私有 类型的 API:不能上架到云市场中售卖。如果有用户想要调用您的私有类型的 API ,需要您主动操作授权,否则用户无渠道获取 API 信息。

  • 描述: API 功能描述。

第二部分:定义 API 请求

这部分是定义用户如何请求您的 API ,包括协议、请求Path、HTTP Method、入参请求模式、和入参定义。

  • 协议:支持 HTTP 和 HTTPS 协议。

  • 请求Path:Path 指相对于服务 Host, API 的请求路径。请求 Path 可以与后端服务实际 Path 不同,您可以随意撰写合法的有明确语义的 Path 给用户使用。您可以在请求 Path 中配置动态参数,即要求用户在 Path 中传入参数,同时您的后端又可以不在 Path 中接收参数,而是映射为在 Query、Header 等位置接收。在 开放 API 接入 API 网关 中,有详细的举例说明和操作截图展示。

  • HTTP Method:支持标准的 HTTP Method,可选择 PUT、GET、POST、DELETE、PATCH、或 HEAD。

  • 入参请求模式:API 网关对入参的处理模式,支持 入参映射 和 入参透传 两种模式。

    • 入参映射:即 API 网关在接收到您的 API 请求时,通过映射关系将请求转换成您后端需要的格式。

      使用入参映射模式的特点:

      定义方式:定义此类 API 时,需添加前后端参数映射关系。

      使用场景:

      • 同一接口,在 API 网关定义不同的 API,以服务差异化的用户。

      • 通过 API 网关规范化陈旧的系统接口。

      实现功能:

      • 支持您配置前端和后端的全映射,即参数混排。可以让 API 用户在 Query 中传入参数, 后端从 Header 里接收等。

      • 支持:参数名称转换和参数位置转换。

      • 可以定义参数的校验规则,实现请求参数的预校验,降低后端处理非法请求的压力。

      • 支持:参数长度校验、参数数值大小校验、参数正则校验、和参数 JSON Schema 校验。

    • 入参透传:即 API 网关在接收到 API 请求后,不对请求进行处理,直接转发到后端服务。此模式下:

  • 入参定义:定义您 API 的请求入参,包含参数名、参数位置、类型、是否必填、默认值、示例、描述等信息。入参透传模式下,不需要录入参数

    • 参数名:展示给用户的参数名称。

    • 参数位置:参数在请求中的位置,包含 Head、Query、和 Parameter Path。

      注意:如果您在 Path 中配置了动态参数,存在参数位置为 Parameter Path 的同名参数。

    • 类型:字段的类型,支持:String、Int、Long、Float、Double、和 Boolean。

    • 必填:指此参数是否为必填。当选择为  时,API 网关会校验用户的请求中是否包含了此参数。若不包含此参数,则拒绝该请求。

    • 默认值:当 必填 为  时生效。在用户请求中不包含此参数时,API 网关自动添加默认值发送给后端服务。

    • 示例:指参数的填写示例。

    • 描述:参数的用途描述及使用注意事项等。

    • 参数校验规则:单击 编辑更多 配置校验规则,如参数值的长度、取值大小、枚举、正则、JSON Schema等。API 网关会参照校验规则对请求做初步校验。如果入参不合法,则不会发送给您的后端服务,以降低后端服务的压力。

第三部分:定义后端服务信息

这部分主要是定义一些参数的前后端映射,即 API 后端服务的配置,包括后端服务地址、后端Path、后端超时时间、参数映射、常量参数、系统参数。用户请求到达 API 网关后,API 网关会根据您的后端配置,映射为对应的后端服务的请求形式,请求后端服务。

  • 后端服务类型:目前支持 HTTP/HTTPS和函数计算两种类型。

    • HTTP/HTTPS:若您的服务为 HTTP/HTTPS 服务,则选择此项。

      注意:若是 HTTPS 服务,后端服务必须有 SSL 证书。

    • 函数计算:若选择函数计算为后端服务,需先在 函数计算控制台 中创建函数,并需填入函数服务名称和函数名称,和获取函数计算角色 Arn。

  • VPC 通道:当您的后端服务在 VPC 中时,需要选择 使用 VPC 通道。使用方法,请参见 专属网络 VPC 环境开放 API。

  • 后端服务地址:后端服务的 Host,可以是一个域名,也可以是 http(s)://host:port 的形式。填写时,必须包含 http:// 或 https:// 。

  • 后端请求 Path:Path 是您的 API 服务在您后端服务器上的实际请求路径。若您后端 Path 需要接收动态参数,则需要声明调用者需传入参数的具体位置和参数名,即声明映射关系。

  • 后端超时时间:指 API 请求到达 API 网关后,API 网关调用 API 后端服务的响应时间,即由 API 网关请求后端服务开始直至 API 网关收到后端返回结果的时长。单位为毫秒。设置值不能超过 30 秒。如果响应时间超过该值,API 网关会放弃请求后端服务,并给用户返回相应的错误信息。

  • 常量参数:您可以配置常量参数。您配置常量参数对您的用户不可见,但是 API 网关会在中转请求时,将这些参数加入到请求中的指定位置,再传递至后端服务,实现您的后端的一些业务需求。比如,您需要 API 网关每次向后端服务发送请求都带有一个关键词 aligateway,您就可以把 aligateway 配置为常量参数,并指定接收的位置。

  • 系统参数:指 API 网关的系统参数。默认系统参数不会传递给您,但是如果您需要获取系统参数,您可以在 API 里配置接收位置和名称。具体内容如下表:

  • 参数名称参数含义

    CaClientIp

    发送请求的客户端 IP

    CaDomain

    发送请求的域名

    CaRequestHandleTime

    请求时间(格林威治时间)

    CaAppId

    请求的 APP 的 ID

    CaRequestId

    RequestId

    CaApiName

    API 名称

    CaHttpSchema

    用户调用 API 使用的协议,http 或者 https

    CaProxy

    代理(AliCloudApiGateway)

    注意:您需确保您录入的所有参数的参数名称全局唯一,包括 Path 中的动态参数、Headers 参数、Query 参数、Body 参数(非二进制)、常量参数、系统参数。如果您同时在 Headers 和 Query 里各有一个名为 name 的参数,将会导致错误。

第四部分 定义返回结果

录入返回 ContentType、返回结果示例、失败返回结果示例、和错误码定义。

API调试

API 定义录入完成后,您可以在 API 调试页面调试 API,以确定 API 的可用性。

API 创建、定义完成后,页面自动跳转到 API 列表 页。您可以通过此页面按钮,测试创建的 API 是否可用,请求链路是否正确。

  1. 1.单击 API 名称或 管理 按钮,进入 API 定义 页面。

  2. 2.单击左侧导航栏中 调试 API

  3. 3.输入请求参数,单击 发送请求

  1.  返回结果将显示在右侧页面。

  2.  如果调试返回成功结果,则说明该 API 可以使用。

  3.  如果返回代码为 4XX 或 5XX,则表示存在错误。请参见 如何获取错误信息 和 错误代码表。

后续步骤

完成以上定义后和初步调试后,您就完成了 API 的创建。您可以发布 API 到测试、预发、线上环境,继续调试或供用户使用。还可以为 API 绑定 签名密钥 和 流量控制等安全配置。




实例类型与选择指南

1. API网关实例类型

API网关实例指用于接入并处理您的API的一组资源,包含公网IP、内网IP、公网出口、负载均衡、服务器、存储等,API分组必须挂载在合法的实例下才能运行,目前API网关有如下的实例类型供您选择:

1.1. 实例类型说明

  • 共享实例(经典网络)

    选择共享实例,您不需要支付资源的时租费用,按照API的使用次数和产生的公网流量计费。但服务器资源池、IP地址、带宽等资源为当前Region下的一组用户共有,共享实例API分组的RPS默认上限为500,如果您需要更大的RPS,可以通过工单提出申请,我们会根据您的使用情况和当前资源进行分配,或直接购买专享实例。共享实例(经典网络)是API网关最早推出的实例类型,支持公网访问、VPC内网访问、支持VPC后端地址、公网后端地址及经典网络内网后端地址,但暂时并不支持新推出的插件体系。

  • 共享实例(VPC)

    共享实例(VPC)与共享实例(经典网络)的计费,分配,以及RPS的管理规则是一样的。VPC实例是一个新发布的技术重构版本,支持完整的插件体系(JWT授权,流控,IP访问控制,后端签名,CORS,缓存,路由等 ),支持公网访问、VPC内网访问、支持VPC后端地址、公网后端地址但不支持经典网络后端地址,在一些技术实现的细节上与经典网络实例存在一些差异。

  • 专享实例(VPC)

    专享实例(VPC)与共享实例(VPC)的技术规格一样,用户可以通过支付规格配置费用自助购买更高的RPS,获取独享的资源,包含公网入口IP地址、仅允许自己VPC访问的的内网IP地址、公网出口带宽、独立隔离的服务器集群等,提供更高等级的SLA保障。

1.2. 实例规格与限制

规格与限制共享实例(经典网络)共享实例(VPC)专享实例(VPC)
开通费用无开通费用无开通费用需要支付实例的规格配置费用
SLA99.9%99.9%99.95% ~ 99.99%
收费方式调用次数 + 网络流量计费调用次数 + 网络流量计费实例规格费用(后付费、预付费 + 网络流量计费
公网入口地址多租户共享多租户共享独享
VPC内网入口地址多租户共享多租户共享独享(仅允许用户指定的VPC内访问)
公网后端出口带宽多租户共享出口IP与带宽多租户共享出口IP与带宽独享出口IP与带宽
请求包体限制8M Bytes8M Bytes32M Bytes
断路器插件不支持默认配置,不可定制可定制自定义配置
Caching不支持每个用户30M Bytes参照实例规格
Dashboard仪表盘不支持不支持支持*
自定义日志内容不支持不支持支持*

说明: * 近期发布。

2. 实例技术规格的差异

下表列出一些重要的差异,如果您有更多的疑问,请通过工单咨询

技术规格共享实例(经典网络)共享实例(VPC)、专享实例(VPC)
插件系统不支持支持
后端地址支持经典网络内网后端地址不支持经典网络内网后端地址,支持VPC后端地址, 及公网地址
函数计算同Region内网连接同Region内网连接。北京、杭州、深圳、上海需要将FC切换到VPC
https后端tls版本TLS1.0TLS1.0, TLS1.1,TLS1.2
CORS默认返回全部允许可通过cors插件定制化配置
Flash跨域内置crossdomain.xml不支持,可通过配置Mock后端实现

4. 变更API分组的归属实例

您可以在控制台的分组->分组详情页中找到变更分组实例链接,点击变更分组实例链接完成分组迁移,分组迁移会实时生效在API网关二级域名的DNS上,根据DNS的缓存,大约1~10分钟内完整生效至您的分组,迁移至不同实例的注意事项请参考如下列表。

4.1. 迁移至共享实例(VPC)

用户可以自行将分组在不同的实例间进行迁移,您可以在API网关控制台的的分组管理->分组详情页中,点击变更分组实例链接完成分组迁移,分组迁移会实时生效在二级域名的DNS上。如果您的分组调整过RPS,又希望进行迁移的,请通过工单联系工作人员代为处理。VPC实例和经典网络实例存在一些实现上的细节差异,请逐条确认后以下技术细节后再进行分组迁移工作。

  • VPC网关不支持经典网络内网后端地址, 如果您的后端地址属于经典网络内网,则迁移后会导致API无法使用,请通过VPC授权方式替换后再执行迁移动作。

  • 网关的出口地址会出现变更,请在实例管理页面查看出口地址,确保API网关的出口IP在后端允许访问的列表中

  • VPC网关不再提供内置的crossdomain.xml,如果您用到了,请通过配置MOCK API来代替。

  • 已绑定的流控,IP访问控制,后端签名策略会继续生效,绑定相同策略的插件后会覆盖原来的对应策略

  • 已设置OpenId Connect访问策略的API仍会继续生效,绑定JwtAuth的插件后会覆盖原有API上的设置

  • 如果您使用了北京,上海,杭州,深圳Region的函数计算后端,且并没有将您的函数计算后端迁移到VPC区,API网关将暂时使用公网访问您的函数计算服务

4.2. 迁移至专享实例(VPC)

您可以购买专享实例以获得更高的RPS(每秒请求数)以及SLA,您可以在API网关控制台的的分组管理->分组详情页中,点击变更分组实例链接完成分组迁移,分组迁移会实时生效在二级域名的DNS上。迁移至专享实例后、您的分组RPS上限以及HTTPS安全策略将被实例的RPS上限以及HTTPS安全策略代替。如果您从共享实例(经典网络)迁移至和专享实例(VPC),请逐条确认后以下技术细节后再进行分组迁移工作,建议您先建立测试分组在共享实例(VPC)上完成测试后,在进行迁移工作。

  • VPC网关不支持经典网络内网后端地址, 如果您的后端地址属于经典网络,则迁移后会导致API无法使用,请通过VPC授权方式替换后再执行迁移动作。

  • 网关的出口地址会出现变更,请在实例管理页面查看出口地址,确保API网关的出口IP在后端允许访问的列表中

  • VPC网关不再提供内置的crossdomain.xml,如果您用到了,请通过配置MOCK API来代替。

  • 已绑定的流控,IP访问控制,后端签名策略会继续生效,绑定相同策略的插件后会覆盖原来的对应策略

  • 已设置OpenId Connect访问策略的API仍会继续生效,绑定JwtAuth的插件后会覆盖原有API上的设置

4.3. 迁移回共享实例(经典网络)

您可以选择迁移回经典网络实例,您可以在API网关控制台的的分组管理->分组详情页中,点击变更分组实例链接完成分组迁移,请逐条确认以下技术差异后再进行分组迁移工作。

  • VPC实例支持后端TLS1.2,经典网络实例仅支持TLS1.0

  • 所有的插件配置均会失效,经典网络实例的流控,IP访问控制,后端签名需要在对应的策略中重新配置

  • 网关的出口地址可能出现变更,请在实例管理页面查看出口地址,确保API网关在允许访问的白名单中

  • 一些新的Feature可能不被支持,请关注控制台上的提示




API开放

API 创建完成后,您就可以开放 API 服务了。要开放 API 服务您需要绑定一个在阿里云系统备案成功的独立域名,且该域名要完成 CNAME 解析。而独立域名是绑定在 API 分组上面的,所以在这个部分为您详细说明一下开放 API 服务需要了解的 API 分组和域名。

第一部分:API 分组

API 分组是 API 的管理单元。您创建 API 之前,需要先创建分组,然后在某个分组下创建 API。分组包含名称、描述、区域(Region)、域名几大属性。

  • 分组的区域(Region)在分组创建时选定不可更改。创建 API 时,如果选定分组那么 Region 也一同选定,不可更改。

  • 每个账号 API 分组个数上限为50个,每个分组 API 个数上限为200个。

  • 域名。分组创建时,系统会为分组分配一个二级域名。如果需要开放 API 服务,您需要为分组绑定一个在阿里云系统备案成功的独立域名,且将独立域名 CNAME 到相应的二级域名上。每个分组最多只能绑定5个独立域名。具体请看下文——域名及证书。

第二部分:环境管理

关于环境需要理解两个概念,环境环境变量

  • 环境是 API 分组上的一个配置,每个分组有若干个环境。 API 录入后,未经发布时,就只是 API 定义。发布到某个环境后才是能够对外提供服务的 API 。

  • 环境变量是在环境上用户可创建可管理的一种变量,该配置是固定于环境上的。如在线上环境创建变量,变量名为 Path,变量值为 /stage/release.

在 API 定义中的 Path 位置,写作 #Path#,即配置为变量标识,变量名为 Path

那么将该 API 发布到线上环境时,该 API 在线上环境的运行定义,Path 处的 #Path#,会取值为 /stage/release

而将该 API 发布到其他环境时,若环境上没有环境变量 #Path#,则无法取值,那么 API 就无法调用。

使用环境变量可以解决后端服务需要区分环境的问题,通过不同的环境上配置不同的服务地址和Path,来调用不同的后端服务,同时 API 的定义配置又是一套。使用时需要注意以下几点:

  • 在 API 定义中配置了变量标识后,在 API 列表—管理—调试 页面将无法调试。

  • 变量名严格区分大小写。

  • 如果在 API 定义中设置了变量,那么一定要在要发布的环境上配置 变量名变量值,否则变量无赋值, API 将无法正常调用。

第三部分:域名及证书

API 网关通过域名来定位到一个唯一的 API 分组,再通过 Path+HTTPMethod 确定唯一的 API 。如果要开放 API 服务,您需要了解 二级域名 和 独立域名

  • 二级域名是分组创建时系统分配的,唯一且不可更改。在您还没有独立域名之前,您可以通过访问二级域名来测试调用您的 API 。二级域名仅能用于测试,默认每天只能请求1000次。

  • 独立域名即自定义域名,是您开放 API 服务需要绑定的,用户通过访问您的独立域名来调用您开放的 API 服务。您可以为一个分组绑定多个独立域名,上限为5个。对于独立域名的配置您需要注意以下几点:

    • 独立域名不必须是根域名,可以是二级、三级域名。

    • 独立域名需要 CNAME 解析到分组的二级域名上。

    • 满足上述的备案和解析两个要求,域名才能成功绑定。

  • 当您的 API 服务支持 HTTPS 协议时,需要为该域名上传 SSL 证书,在 分组详情 页面进行添加即可。SSL 证书上传不支持文件上传,需要填写 证书名称内容 和 私钥

第四部分:测试、线上、授权

通过上述操作您已经完成 API 的创建和域名绑定,接下来就可以将 API 发布到测试或者线上环境,进行调试和开放了。其中一个重要的环节是授权,授权即授予某个 APP 可以调用某个 API 的权限。

  • 当您完成 API 创建之后,您就可以将 API 发布到测试或者线上,并给自己创建的 APP 授权,通过访问二级域名来调用指定环境中的 API,进行测试。

  • 成功绑定独立域名之后,您的 API 就可以在市场上架,供客户购买、调用。您还可以不经过购买将 API 授权给合作伙伴的 APP,供其调用。

至此,您完成 API 服务的开放。在 API 创建到开放的整个过程中,您还可以随时操作 API 的创建、修改、删除、查看、测试、发布、下线、授权、解除授权、发布历史及版本切换等操作。





参数映射与校验规则

1. 概述

API网关支持参数映射与校验逻辑,本篇文档描述了API网关对转发客户端发起的HTTP请求到HTTP后端服务,以及转发后端服务的HTTP应答到客户端的处理规则,

目前API网关支持以下几种传输处理方式:

  • 透传模式透传模式下,API网关除Path位置的请求参数外,不对其他位置的请求参数进行映射与校验,用户参数会透明传递给后端,详细请阅读章节2. 透传模式

  • 映射模式映射模式下,API网关会根据用户配置的所有参数执行校验与映射,如果客户端传递了未在配置中的参数,参数将会被API网关过滤掉,不会转发给后端,详细请参考章节3. 映射模式

  • 透明映射模式: 类似映射模式,但在透明映射模式下,如果用户传递了未配置的参数,参数会被透明转发给后端,详细请参考章节4. 透明映射模式

2. 参数位置与读取规则

API网关支持从HTTP请求的各种位置上读取参数,以及API网关提供的系统参数与用户可配置的常量参数

2.1. path参数

API网关支持从HTTP请求的分段路径中提取参数的能力,使用path参数,需要首先将API的请求路径配置为/path/[parameter]的格式,API网关会使用参数路径方式去匹配HTTP请求中的路径,请参考如下的例子:


请求路径配置输入参数提取结果
/request/to/[path]/request/to/user1path=user1
/[path1]/[path2]./group1/user1path1=group1, path2=user1
/[root]/*/root/user1root=request
/[root]/root/user1无法匹配.

- API网关对于不符合RFC3986的非法输入,直接返回错误码:I400PH: Invalid Request Path- API网关支持的最大RequestUri长度为128KBytes, 超过这个限制时会返回错误码:I413RL: Request Url too Large

2.2. query参数

query参数为请求在QueryString中携带的参数,API网关会对请求QueryString通过=&分割符进行键值对的拆分,并使用UTF-8编码做Url Decode,对于?a=?a均被认为是值等于空字符串''的合法值,如:


QueryString输入参数提取结果
?a=1&b=2a: "1", b: "2"
?a=1&a=2a: ["1", "2"] ; 参数为非array类型时仅使用第一个值
?aa: ""
?a=a: ""
?=a&b=1b: "1" ; =a这个输入会被API网关忽略
  • *API网关对于不符合RFC3986的非法输入,直接返回错误码:I400PH: Invalid Request Path

  • *API网关支持的最大RequestUri长度为128KBytes, 超过这个限制时会返回错误码:I413RL: Request Url too Large

2.3. formData参数

formData参数为当请求的Content-Typeapplication/x-www-form-urlencoded时,消息体中携带的值。如果Content-Type没有指定charset=则网关会使用UTF-8编码,否则使用charset中指定的字符集来进行Url Decode,对于Form的拆分与处理逻辑与QueryString中描述的处理方式一致。

Content-Typemultipart/formdata时,网关支持进行文件类型参数,详见章节3.4. 文件类型参数

2.4. header参数

header参数会从HTTP请求的头中读取,比如X-User: aaa会被解析为X-User=aaa,特殊规则如下

  • Header值中包含的前后空格会被截取掉

  • 如果存在多个重名Header且参数类型被配置为ARRAY则参数会被解析为数组,否则只取第一个值

  • API网关使用ISO-8859-1编码读取和转发Header,非法字符会导致乱码或其他非预期的结果

2.5. host参数

host参数仅在用户绑定了泛域名和有效的泛域名模板时才有效,例如:绑定泛域名*.api.foo.com且配置了泛域名模板${user}.api.foo.com,则当收到请求1234.api.foo.com时,会读取到host参数user=1234,用户可以配置多个泛域名模板,API网关会使用第一个匹配到的记录来解析host参数, 如果没有记录,则不会读取到host参数,具体例子如下


泛域名模板配置请求Host参数提取结果
${User}.api.io123.api.ioUser: "123"
${User}.${Group}.api.io123.g01.api.ioUser: "123" Group: "g01"
${Admin}.admin.api.io${User}.${Group}.api.io.123.api.ioUser: "123"
${Admin}.admin.api.io${User}.${Group}.api.io123.admin.api.ioAdmin: "123"
${Admin}.admin.api.io${User}.${Group}.api.io123.u00.api.ioUser: "123"GroupId: "u00"
${User}.${Group}.api.io${Admin}.admin.api.io123.admin.api.ioUser: "123"Group: "admin"

在最后一个例子中,因为第一条记录就已经命中匹配了,所以忽略后面的所有记录。

3. 参数透传模式

透传模式支持以下方法: GETPUTPOSTDELETEPATCHHEADOPTIONS

3.1. 转发客户端请求后端服务

在透传模式下,API网关在处理签名和授权后,会将请求透明传输给后端,对于不同位置的透传规则如下

  • Path: 当用户将API的请求路径配置为/path/to/[user]的格式时,可以同时配置/path/backend/[user]到后端服务路径上,API网关会识别前端路径参数并将其映射到后端服务路径上

  • QueryString: 透明传输给后端,保持原始接收到的QueryString的顺序与格式

  • Header: 除一些系统头和以X-Ca-开头的Header以外,网关会透传其余的Header给后端,API网关会使用ISO-8859-1编码读取和转发Header,所以如果你在Header中传递了非法的编码,可能会收到非预期的结果,对于系统以及API网关保留Header的处理逻辑,请参考`章节5. Http头处理规则'

  • Body: 包体会透明转发给后端,如果用户在API配置中设置了自定义Content-Type,则使用设置的Content-Type,否则转发客户端提供的Content-Type

3.2. 转发后端应答客户端

在透传模式下,如果后端成功返回应答,API网关会将来自后端服务HTTP应答转发给客户端,如果在处理过程中失败了,由API网关生成错误码,错误处理请参考API网关错误码处理,透传规则如下

  • StatusCode: 透传来自后端应答的错误码

  • Header: API网关会过滤或添加一些系统Header和名字以X-Ca-起始的保留Header,透传来自后端应答的其他Header,详细参考章节5. Header转发规则

  • Body: API网关会将来自后端服务应答的包体转发给客户端, 后端应答的Content-Type为空,则补充一个默认值: application/oct-stream

可以通过使用错误码映射插件,来改写客户端的应答码。

4. 参数映射模式

参数映射下,API网关会根据用户配置的所有参数执行校验与映射,如果客户端传递了未在配置中的参数,参数将会被API网关过滤掉,不会转发给后端,如果您希望网关转发未配置参数给后端. 透传映射模式。在参数映射模式下,API网关可以支持query,header,host,path,formData位置下的参数,并进行参数值的类型判断、校验,并进行向后端的映射。

4.1. 参数类型

API网关目前支持以下参数类型


类型类型说明格式支持可选校验方式
String字符串不限最小长度、最大长度、枚举值、正则
Integer32位整数1-1100最小值,最大值,枚举值
Long64位整数-12331001最小值,最大值,枚举值
Double浮点数100,0.1,9E-9,1.01E16最小值,最大值
Boolean布尔值truefalse; (忽略大小写)
File文件类型仅用于multipart/form-data最小长度、最大长度
Array数组类型参考数组字段类型数组字段类型上的校验

1. Float类型与Double类型在处理标准与过程一致,不再单独列出。

4.2. 参数校验配置

  • 参数校验可通过控制台OpenAPI导入Swagger的方式设置, 设置方式与含义如下


名称说明OpenAPI的字段Swagger中的字段
参数名必选, API内唯一ApiParameterNamename
参数位置必选Locationlocation
参数类型可选,默认类型为StringParameterTypetype
数组参数类型可选,参数类型为Array时, 指定数组字段类型ArrayItemsTypeitems.type
是否必填可选, 默认为Requiredrequired
默认值可选, 空字符串''不是有效的默认值.DefaultValuedefault
最大值可选, 输入值必须小于等于最大值MaxValuemaximum
最小值可选, 输入值必须大于等于最小值MinValueminimum
最大长度可选, 仅对String类型有效MaxLengthmaxLength
最小长度可选, 仅对String类型有效MinLengthminLength
正则表达式可选, 仅对String类型有效RegularExpressionpattern
枚举值可选EnumValueenum


参数校验的一些匹配规则:

  • OpenAPi与Swagger对参数类型的取值定义不同,本节的描述参考Swagger标准

  • 如果不设置参数类型,默认的类型为String

  • 如果参数类型的输入格式与当前类型的支持格式不符,会报错误码: I400IP Invalid Parameter :...``

  • 如果参数设置为了必选,如果客户端的请求中不传递,网关会阻拦这个请求,并报错误码: I400MP Invalid Parameter Requried:...``

  • 可选参数可以配置缺省值,当客户端不传递这个参数时,使用配置的缺省值传递给后端,但API网关不认为空字符串: ''是合法的缺省值,网关不会将配置为空字符串的缺省值传给后端。

  • 当参数处于query,formData位置时,对于形如aa=格式的输入,如?b=1&a,API网关认为输入参数为空字符串'',``

    • 此时如果参数设置必选,不报错

    • 如果参数设置为可选且配置了缺省值,网关将不使用缺省值,将空串传递给后端

  • 当参数类型为Integer,Long,Float,Double值时,如果输入为空字符串'',则认为此参数没有传递,

    • 当此参数为必选时,网关会阻拦这个请求,并报错误码400: <I400MP> Invalid Parameter Requried: ...

    • 当此参数为可选且存在缺省值配置时,使用缺省值发送给后端

  • 最小长度与最大长度的判断依据为大于等于最小长度和小于等于最大长度,可以单独设置,或同时设置,只有大于0的配置才会生效

  • 正则表达式的最大允许长度为40个字符,

  • 字符串类型和数字类型均可以使用枚举设置,使用逗号分隔:比如江,河,湖,海,如果输入值不在列表中,会报错误码: I400IP: Invalid Parameter :...``

  • 如果参数类型设置为ARRAY数组类型,只有queryformDataheader三个位置的参数支持数组格式,数组参数的校验规则对可以对每个数组元素生效,类型由数组参数类型字段指定,默认为字符串

4.3. 后端参数映射规则

  • 用户可以设置参数的后端位置后端名称,API网关会在映发送请求给后端服务时,进行参数位置与名称的转换

  • API网关的参数类型仅用于校验,不会变更传递到后端的形式,如Double类型的参数如果输入为a=1不会被更改为a=1.0

  • 参数类型为ARRAY时,后端位置只能为query,formData,header,发送给后端时使用会多个参数或多个Header的方式,如a=1&a=2, 不使用a=1,2的方式

  • 传递给后端的QueryString会使用UTF-8编码的URL Encode进行重新组装

  • 如果参数中包含了Form参数时,会使用application/x-www-form-urlencoded; charset=utf-8multipart/formdata; charset=utf-8作为包体格式发送给后端

    • 如果参数中包含File类型,会使用multipart/formdata; charset=utf-8进行组装, 否则使用application/x-www-form-urlencoded; charset=utf-8进行组装

    • 如果用户在API定义的后端服务部分,设置了自定义Content-Type,则会以用户的Content-Type发给后端,如果用户自定义的Content-Type形势属于application/x-www-form-urlencoded; charset=???multipart/formdata; charset=???形式,则使用自定义中描述的Encoding进行组装,对于其他的Content-Type,不进行编码的特殊处理

  • 当转发的参数处于header位置时,网关会使用ISO8859-1编码进行转换和发送

4.4. 转发后端应答客户端

在映射模式下,如果后端成功返回应答,API网关会将来自后端服务HTTP应答转发给客户端,如果在处理过程中失败了,由API网关生成错误码,错误处理请参考API网关异常处理,透传规则如下

  • StatusCode: 透传来自后端应答的错误码

  • Header: API网关会过滤或添加一些系统Header和名字以X-Ca-起始的保留Header,透传来自后端应答的其他Header,详细参考5. Header转发规则

  • Body: API网关会将来自后端服务应答的包体转发给客户端, 后端应答的Content-Type为空,则补充一个默认值: application/oct-stream

可以通过使用错误码映射插件,来改写客户端的应答码。

5. 透传映射模式

透传映射模式参数映射模式的校验与处理机制一致,区别在于透传映射模式下,请求中的未知参数会在原位置上透传给后端,而参数映射模式下,未知参数会被过滤掉。

6. 严格映射模式

严格映射参数映射模式的校验与处理机制一致,区别在于严格映射模式下,当请求中包含未知参数时会直接按报错处理。

7. Http Header处理规则

一般来讲,所有以X-Ca-开头的Header均为API网关保留Header, API网关会对X-Ca-的Header做特殊处理, 请不要在您的业务中使用X-Ca-开头的头,否则会导致头被过滤,或产生未预期的行为。


HeaderName请求处理方式应答处理方式
Connection重建重建
Keep-Alive重建重建
Proxy-Authenticate重建重建
Proxy-Authorization重建重建
Trailer重建重建
TE重建重建
Transfer-Encoding重建重建
Upgrade重建重建
Host重建
Authorization校验、映射或透传
Date
透传或添加默认
Content-Type映射或透传透传或添加默认
Content-Length映射或透传
Content-MD5校验并透传
Via添加网关记录
X-Forwarded-For在右侧添加客户端IP
X-Forwarded-Proto添加客户端请求协议: 'http',https','ws','wss'
User-Agent透传或添加网关UserAgent
Server
透传或添加默认
  • 所有标记为重建的Header不会透传,网关会重新添加为网关设置的值。

  • 未在表中出现的Header如果客户端请求为透传模式,则将请求头透传给后端,如果为映射模式,则除默认的HttpHeader外,其余的Header会被过滤。

  • 未在表重出现的应答的Header默认均透传给客户端。




概述及样例

概述

您可以通过 API 网关,调用由其他阿里云用户或者第三方服务商开放的 API 服务。API 网关将为您提供一系列管理服务与支撑。

调用 API

您可以直接用 API 网关控制台为您提供的多语言调用示例来测试调用。您也可以自行编辑 HTTP(s) 请求调用 API 。签名方式您可以参照控制台的 SDK示例下载

API 调用方式说明及示例如下:(调用 API 前期流程请参照 快速入门(调用 API))。

1.请求

请求地址

http://e710888d3ccb4638a723ff8d03837095-cn-qingdao.aliapi.com/demo/post

请求方法

POST

请求体

FormParam1=FormParamValue1&FormParam2=FormParamValue2 //HTTP Request Body

请求头部

Host: e710888d3ccb4638a723ff8d03837095-cn-qingdao.aliapi.com
Date: Mon, 22 Aug 2016 11:21:04 GMT
User-Agent: Apache-HttpClient/4.1.2 (java 1.6)
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
//请求体类型,请根据实际请求体内容设置。

Accept: application/json
//请求响应体类型,部分 API 可以根据指定的响应类型来返回对应数据格式,建议手动指定此请求头,如果不设置,部分 HTTP 客户端会设置默认值 */*,导致签名错误。

X-Ca-Request-Mode: debug
//是否开启 Debug 模式,大小写不敏感,不设置默认关闭,一般 API 调试阶段可以打开此设置。

X-Ca-Version: 1
// API 版本号,目前所有 API 仅支持版本号『1』,可以不设置此请求头,默认版本号为『1』。

X-Ca-Signature-Headers: X-Ca-Request-Mode,X-Ca-Version,X-Ca-Stage,X-Ca-Key,X-Ca-Timestamp
//参与签名的自定义请求头,服务端将根据此配置读取请求头进行签名,此处设置不包含 Content-Type、Accept、Content-MD5、Date 请求头,这些请求头已经包含在了基础的签名结构中,详情参照请求签名说明文档。

X-Ca-Stage: RELEASE
//请求 API 的 Stage,目前支持 TEST、PRE、RELEASE 三个 Stage,大小写不敏感,API 提供者可以选择发布到哪个 Stage,只有发布到指定 Stage 后 API 才可以调用,否则会提示 API 找不到或 Invalid Url。

X-Ca-Key: 60022326
//请求的 AppKey,请到 API 网关控制台生成,只有获得 API 授权后才可以调用,通过云市场等渠道购买的 API 默认已经给 APP 授过权,阿里云所有云产品共用一套 AppKey 体系,删除 ApppKey 请谨慎,避免影响到其他已经开通服务的云产品。

X-Ca-Timestamp: 1471864864235
//请求的时间戳,值为当前时间的毫秒数,也就是从1970年1月1日起至今的时间转换为毫秒,时间戳有效时间为15分钟。

X-Ca-Nonce:b931bc77-645a-4299-b24b-f3669be577ac
//请求唯一标识,15分钟内 AppKey+API+Nonce 不能重复,与时间戳结合使用才能起到防重放作用。

X-Ca-Signature: FJleSrCYPGCU7dMlLTG+UD3Bc5Elh3TV3CWHtSKh1Ys=
//请求签名。CustomHeader: CustomHeaderValue//自定义请求头,此处仅作为示例,实际请求中根据 API 定义可以设置多个自定义请求头。

2.响应

状态码

400//响应状态码,大于等于200小于300表示成功;大于等于400小于500为客户端错误;大于500为服务端错误。

响应头

X-Ca-Request-Id: 7AD052CB-EE8B-4DFD-BBAF-EFB340E0A5AF //请求唯一 ID,请求一旦进入 API 网关应用后,API 网关就会生成请求 ID 并通过响应头返回给客户端,建议客户端与后端服务都记录此请求 ID,可用于问题排查与跟踪。X-Ca-Error-Message: Invalid Url//API网关返回的错误消息,当请求出现错误时 API 网关会通过响应头将错误消息返回给客户。X-Ca-Debug-Info: {"ServiceLatency":0,"TotalLatency":2}//当打开 Debug 模式后会返回 Debug 信息,此信息后期可能会有变更,仅用做联调阶段参考

您调用 API 时,无论使用 HTTP 还是 HTTPS 协议提交请求,都需要在请求中包含签名信息。AppKey 用于标识您的身份,AppSecret 是用于加密签名字符串和服务器端验证签名字符串的密钥。




HTTPS安全策略

分组HttpsPolicy的设置

用户可以再分组上调整API分组所支持的HTTPS安全策略,HTTPS安全策略仅对绑定了域名及证书的分组有效,目前API网关支持HTTPS1_1_TLS1_0,HTTPS2_TLS1_0,HTTPS2_TLS1_2安全策略,但不同Region支持的安全策略列表不同,在控制台->分组详情页可选择本Region支持的HTTPS安全策略

HTTPS安全策略列表

HTTPS1_1_TLS1_0

  • HTTP1.1协议

  • 支持TLS v1.0 , TLS v1.1 , TLS v1.2

  • 支持加密算法套件:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!RC4:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;

HTTPS2_TLS1_0

  • HTTP2协议, 注意: http2协议会将所有的header转为小写

  • 支持TLS v1.0 , TLS v1.1 , TLS v1.2

  • 支持加密算法套件:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!RC4:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;

HTTPS2_TLS1_2

  • HTTP2协议, 注意: http2协议会将所有的header转为小写

  • 支持TLS v1.2, 注意: 所有不支持TLS v1.2客户端将无法建立连接

  • 支持加密算法套件:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE:!3DES;




监控预警

  • API网关为您提供可视化的实时监控和预警。您可以获得您开放的API被调用数据,包括调用量、流量、响应时间、错误分布等多个维度、多种时间单位的数据统计结果。同时支持历史数据查询,以便您统筹分析。

  • 后续我们会陆续支持报表输出,给您提供最周到的数据支持。

  • 您还可以配置预警,以便实时掌握API运行情况。

  • 配置可参考文章 API网关监控配置