网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl

网关控制台: https://apigateway.console.aliyun.com/?spm=5176.doc42740.2.2.Q4z5ws#/cn-hangzhou/apis/list

开放API并接入API网关:https://help.aliyun.com/document_detail/48777.html?spm=5176.doc29464.6.545.8kpfId

类似于web-service,可以包含多个操作。API 网关上,一个API分组下可以有多个 API。

下面以一个 API 配置流程作为例子,假如数据市场开放一个服务。

  • 服务名称:已开放的 API 服务信息查询。
  • 服务描述:您通过调用 API 可以查询已经开放的 API 的列表、详细信息等。

例1:Path 中没有动态参数。

例2:Path 中有动态参数。

后端前端的灵活映射:

前端:您调用 API 时,API 请求从您到网关的部分。

后端:请求到达网关后,网关到实际后端服务的部分。

  1. 后端host ≠ 前端域名。
  2. 后端path ≠ 前端 path。
  3. 客户传入参数的位置和名称 ≠ 实际后端服务接收参数的位置和名称(注意 body 只能前后端都为二进制或者都为 form)。

    API 网关可以做全方位的前后都映射。

那么上面这个例子该要怎么配置,基本步骤流程如下(以例 2 为例):

一、前端配置

步骤 1: 创建分组

步骤 2: 绑定域名

  1. 创建分组之后,到分组详情页面获取该分组的二级域名,如上图。
  2. 去购买对外独立域名 globalservice.api.com 的网站,将独立域名 CNAME 解析到分组的二级域名上。
  3. 解析 CNAME 完成后,回到分组详情页面,点击绑定域名,将 globalservice.api.com 绑定到该分组。
  4. 由于后端是 https,所以还需要上传 SSL 证书,不支持上传文件,需要把内容复制进来。

步骤 3: 创建 API_基本信息

基本信息这一步完成的是 API 分组选定、 API 名称设置、API 认证方式和类型的选择,完善 API 描述文案。

  1. 如上图所示,进入 API 列表页。

  2. 选择跟 API 分组同一个区域。

  3. 注意安全认证。

    • APP:表示客户调用您的 API 时由 API 网关对其 APPkey 和 Secret 做验证,您不需要认证客户的身份。
    • 无认证:表示任何人只要获取了调用方式就可以调用您的 API,且无法区分调用者进行计量。无认证的 API 不建议上架数据市场。
  4. API 类型。

    • 公开:意味着任何人在“发现 API”页面可以看见该 API,且上架数据市场时,分组内公开类型的 API 才会上架。
    • 私有:意味着任何人不会看见该 API,除非某个 APP 获得了授权。所在分组上架数据市场时,不包括组内私有类型的 API。

步骤4: 创建 API_定义 API 请求

定义 API 请求这一步完成的是第三方使用者调用数据市场上的 API 时的请求样式,即前端。

首先配置协议、Path、Method。如下图:

  1. 配置协议。

    • 在前端配置中可以同时支持 HTTP/HTTPS 协议,后端如果要支持 https,需要给独立域名匹配 SSL 证书。
  2. 配置请求 path。

    • Path 就是您调用 API 时,Url 中 .com 后到 ? 之前的部分,Path 包含动态参数的情况在后续的后端配置步骤中详细说明。

      举例说明:

      1. 比如您调用的 Url 前部分为:
      2. https://globalservice.api.com/getapilist?command=...
      3. 那么您的 Path 就是:
      4. /getapilist
  3. 由于要示范带有 Body 的 API ,所以此处将 Method 选为 Post。

步骤5: API 网关_入参配置

入参定义是指您调用 API 时,需要传入的参数的说明。

API 网关入参配置是支持混排的,把所有参数在一起配置,然后选择参数的位置是 Header、Query 还是 Body,甚至是在 Path上。仍以上面的初始假设为例,入参配置如下图:

  1. 需要注意所有参数的名称会校验是否唯一。
  2. 再次注意这一步配置的是您调用 API 时的入参,也就是前端的展现样式。配置这一步中的5个参数需要您把 Url中 在 ? 后面的部分以 keyvalue 形式传入 command 和 region,配置在 Query 上。另外几个参数 key1、key2、group,需要用户在 Body Form 传入,配置在 Body 上。
  3. 左侧有快捷键可以快速调整参数顺序,跟定义展示有关。

至此,前端入参就配置完成了,下一步骤配置后端服务定义。

二、后端配置

创建API_定义API后端服务

定义 API 后端服务 这一步完成的是后端服务接收 API 请求的样式定义。即用户按照上一步教程的完成前端配置发送 API 调用到 API 网关,然后 API 网关通过解析您的映射规则,按照您的要求去请求您的后端,保证后端服务最低成本的改造和最高的兼容。

也就是说这一步配置的是网关请求您的后端时,网关的请求样式定义,来符合您后端的既定格式。

步骤1:首先配置后端基础定义,包括后端服务地址、后端请求 Path、后端 Method、超时时间。

  1. 后端服务地址,就是您后端服务的http(s)://host:port,也可以是一个域名。这个例子中的后端服务地址就是https://a.b.com:8080。
  2. 后端请求 Path,即网关访问后端时用的 Path,是 Url 中后端服务地址后到?前的内容,这里的后端请求Path就是 /region/group。
  3. 注意,这里前端的 Path 是 /getapilist,可以和后端不一样,而且后端的 Path 中需要有参数传入。这个报错下一部分说明。
  4. 后端的 Method 也可以跟前端不一样,这里建议最好一致,这里仍然是 POST。

步骤2:配置后端服务参数,其实主要是映射。

  1. 如上图,这一步会把上一步配置的前端入参拉取过来,需要变更的是左侧标红的两列,当然如果前后端一致就不用变化了。
  2. 需要注意的是 region、group,这里的前端是配置在 Query 和 Body 里面,而后端从 Path 以接收。上面配置 Path 时报错了,按照图示更改之后,报错就会消失了。
  3. 根据后端实际的参数名和接收位置进行调整。图示左侧标红的部分是针对后端需要修改的,右侧不能修改的是既定前端配置。当然如果前端有变化还可以回去上一步修改。

配置完成如下图:

注意 Path 中的参数位置选择 Parameter Path。

常量参数和系统参数 API 的请求者不可见,由网关在请求后端服务时添加上。

常量参数。比如您的后端需要接收一个常量,但是这个常量您不希望被您的客户看见,那么就设置一个常量参数,可以在 Header 或者 Query 里面接收。

系统参数。比如您需要获取客户调用 API 时用的 APP 的 ID 来做日志统计,您在系统参数配置,可以在 Header 或者 Query 里面接收。强烈建议后端接收 CaRequestId 字段,每个请求一个 ID 唯一,便于问题定位和建立全量日志。如下图:

创建 API _定义返回结果

目前返回结果在 API 网关是不做解析的,API 网关直接转发给 API 的请求者。

三、发布上线

完成前后端配置之后,就完成了 API 定义的配置。接下来还需要做调试、测试、线上发布。然后就可以上架云市场了。

步骤 1:调试

在 API 网关控制台,进入 API 的管理,有个调试页面。在该页面可以设定入参来简单调试,调试默认调用的是测试环境的 API,所以需要把 API 发布到测试环境。如下图:

  1. 页面可以支持 Mock 或者非 Mock 两种调试。
  2. 选择 Mock,需要写定返回结果,Mock 下调试不会真的去调用后端,但是会把访问后端之前的参数、Path 寻址都校验掉。
  3. 不选择 Mock 则会真实调用后端服务,右侧会返回真实的请求结果,这个结果可以是 API 网关返回的也可以是您后端返回的,看具体情况。

步骤 2:测试

这里区别于调试的就是需要真实的模拟 API 使用者的场景来调用测试环境的 API。测试环境的 API 可以通过分组的二级域名进行访问,此时可以尚未绑定独立域名。

API 需要发布到测试环境,需要创建 APP 并操作授权后,才能真实模拟 API 调用。

发布 API 到测试环境,发布成功后在 API 列表环境的测试后面显示 运行中。

创建 APP。

查看应用 ID,应用 ID 后面要用于搜索 APP。

授权使该 APP 可以调用该 API,授权要注意区分环境。

更多说明:

  1. 至此,您已经能够使用您创建的 APP 的 Key 和 Secret 模拟第三方客户调用了。Key 和 Secret 在控制台应用详情查看。具体调用说明请参见 快速入门(调用 API)
  2. APP 是 API 使用者调用 API 的身份,每一个 API 的使用者都需要申请 APP。具体调用说明请参见 快速入门(调用 API)
  3. APP 和 API 之间的鉴权关系通过授权来实现,就是哪个 APP 有调用哪个 API 的权限。授权的完成可以通过 API 开放者主动授权和数据市场完成购买两种方式。具体请参见 快速入门(调用 API)

步骤 3:线上发布后上架数据市场

  1. 您需要准备一个独立域名。该独立域名不能与您后端服务地址相同,但是可以为现有域名的二级、三级甚至更多级的域名。
  2. 该域名需要解析到分组的二级域名上。比如您要把某一组 API 上架数据市场,那么就要将独立域名 CNAME 解析到该分组的二级域名上。
  3. 该域名需要在阿里云 备案,或者原备案不在阿里云但是完成在阿里云的 备案接入
  4. 在 API 网关控制台,把准备好的域名绑定到分组上。
  5. 操作 API 发布到线上环境,然后就可以在数据市场走上架流程了。请参见 数据市场上架引导

步骤4: 辅助 CheckList

  1. 调试、测试调不通,检查服务地址和 Path 配置是否正确。
  2. 返回结果不对,API 网关支持您把后端的 a 映射成前端的 b,检查映射是否正确。
  3. 调不通,检查绑定的独立域名是否在阿里云备案,或者是否在阿里云接入备案。
  4. 调不通,检查绑定的独立域名是否正确 CNAME 解析到相应的二级域名上。
  5. 如果 Invalid Url 报错,检查在调试、测试 API 时, API 是否已经发布到测试环境(环境后显示“运行中”才是发布完成)。
  6. 如果 Invalid Url 报错,检查上架数据市场时,API 是否已经发布到线上(环境后显示“运行中”才是发布完成)。
  7. 在重新更改了定义后,调用发现没生效时,检查是否重新操作了发布。
  8. 上架数据市场的 API 不能选择 无认证,不能选择 私有。

参考一下:https://help.aliyun.com/document_detail/29468.html?spm=5176.doc29466.6.543.dS7JPu

阿里云API网关(2)开放 API 并接入 API 网关的更多相关文章

  1. 2019 GNTC 阿里云参会分享:开放、弹性的阿里云网络NFV平台

    作为全球规模最大的网络技术盛会之一,GNTC全球网络技术大会是网络技术发展的重要风向标,包含战略规划.产业方向.技术趋势.应用创新等皆汇集于此.而作为云服务商代表,阿里云再度受邀以顶级钻石合作伙伴之名 ...

  2. 阿里云服务器Centos7.4开放80端口的记录

    问题: 阿里云服务器安装的是centos7, 搭建网站安装lnmp1.5后发现访问不了, 不明所以, 在一论坛找到关于80端口未开放的原因. 需求: 开放80端口.于是有了下面第一,二,三部分关于开放 ...

  3. 关于阿里云 ETC服务器 端口开放问题

    今天整了个阿里云,为了开放一个端口 各种入出规则整了半天 最后连一个hello world都发不出来.. 最后的最后 才知道 开端口除了做入规则操作 还得调一下阿里的控制台 当你也买了个ECS不要像我 ...

  4. 关于阿里云服务器安装了Apache开放80端口访问不了网页

    先用netstat -tlunp查看80端口是否打开,再关闭服务器的防火墙,可以用 systemctl status firewalld 查看防火墙状态  systemctl stop firewal ...

  5. Linux:阿里云设置安全组开放对应端口过程

    手动添加后 保存就可以了.

  6. 阿里云API网关(9)常见问题

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  7. 阿里云API网关(12)为员工创建子账号,实现分权管理API:使用RAM管理API

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  8. 阿里云SaaS生态战略发布:成就亿级营收独角兽

    导语:本文中,阿里云智能资深技术专家黄省江从“势”“道”“术”三个方面分享了自己对于SaaS生态的理解,并介绍了SaaS加速器发布以来在产品.技术和商业侧最新的一些进展. 在321北京峰会上,阿里云公 ...

  9. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  10. flask+阿里云短信服务实现注册发送手机验证码

    效果图: 该效果主要讲解实现通过调用阿里云的SDK实现发送注册验证码短信(阿里云短信付费使用) 购买阿里云短信服务 购买链接:https://www.aliyun.com/product/sms 1. ...

随机推荐

  1. CSS个别属性

    *{ scrollbar-3dlight-color:#fff; // 3d亮色阴影边框(threedlightshadow)的外观颜色 scrollbar-highlight-color:#fff; ...

  2. Java equals() 和hashCode()方法详解

    Java的Object类中定义了equals方法,Object类中的equals方法源代码如下,从源代码中可以看出Object类中的equals方法是用来返回判断两个对象是否指向同一个对象(引用地址) ...

  3. docker学习系列(五):使用docker创建集成服务--lnmp

    在掌握了docker的基本命令之后,我也是想着去用docker做一点实际的配套环境,就拿自己最常用的lnmp环境来做测试.配套环境运行的顺序依次是mysql->php->nginx,至于为 ...

  4. load vs. initialize

    这篇文章来对比一下NSObject类的两个方法,+load与+initialize. + (void)load; Invoked whenever a class or category is add ...

  5. 笔记:Spring Cloud Eureka 服务治理

    Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务 ...

  6. 【pyHook】 监测键盘鼠标事件等

    [pyHook] pyHook是一个用来进行键盘.鼠标等层面事件监控的库.这个库的正常工作需要pythoncom等操作系统的API的支持.首先来说说如何安装. 直接pip install pyHook ...

  7. c++ --> 重载、重写(覆盖)和隐藏的区别

    重载.重写(覆盖)和隐藏的区别 一.重载 重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心 ...

  8. Java NIO系列教程(六) 多路复用器Selector

    多路复用器Selector是Java NIO编程的基础,熟练地掌握Selector对于掌握NIO编程至关重要.多路复用器提供选择已经就绪的任务的能力.简单来讲,Selector会不断地轮询注册在其上的 ...

  9. java排序算法(三):堆排序

    java排序算法(三)堆排序 堆积排序(HeapSort)是指利用堆积树这种结构所设计的排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法.辅助空间为O(1).最坏时间复杂度 ...

  10. 求逆序对[树状数组] jdoj

    求逆序对 题目大意:给你一个序列,求逆序对个数. 注释:n<=$10^5$. 此题显然可以跑暴力.想枚举1到n,再求在i的后缀中有多少比i小的,统计答案即可.这显然是$n^2$的.这...显然过 ...