网关指南: 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. Lintcode245 Subtree solution 题解

    [题目描述] You have two every large binary trees:T1, with millions of nodes, and T2, with hundreds of no ...

  2. JS获取当前周

    var now = new Date() var weekFirstDay = new Date(now- (now.getDay() - 1) * 86400000) var firstMonth ...

  3. ubuntu,kali linux和windows三系统流水账——写给自己

    我先说一下ubuntu和windows双系统安装的几种方法,最后总结kali linux的安装,想起什么写什么,所以有点乱.然后记录一下自己的使用过程中遇见的问题和解决的方法,还有我的个人建议. 我个 ...

  4. RedissonLock分布式锁源码分析

    最近碰到的一个问题,Java代码中写了一个定时器,分布式部署的时候,多台同时执行的话就会出现重复的数据,为了避免这种情况,之前是通过在配置文件里写上可以执行这段代码的IP,代码中判断如果跟这个IP相等 ...

  5. 处理win7任务栏通知区域图标异常问题

    故障现象:安装的某软件比如QQ,应用程序运行图标始终没有在win7任务栏通知区域显示出来,经观查发现win7任务栏通知区域有几个已删除应用的图标出现,应该是有故障了. 故障现象一:已经卸载的程序,还在 ...

  6. 数字不断递增 可控制js

    (function($){ $.fn.numberRock=function(options){ var defaults={ speed:, count: }; var opts=$.extend( ...

  7. WEBLOGIC 11G (10.3.6) windows PSU 升级10.3.6.0.171017(Java 反序列化漏洞升级)

    10.3.6版本的weblogic需要补丁到10.3.6.0.171017(2017年10月份的补丁,Java 反序列化漏洞升级),oracle官方建议至少打上2017年10月份补丁. 一.查看版本 ...

  8. JVM学习七:JVM之类加载器之类的卸载

    类加载的过程和原理,以及双亲委派机制都已经讲解完成,那么我们今天讲解类加载的最后一节,那么就是类的卸载. 我们知道,当一个类被加载.连接和初始化之后,他的生命周期就开始了,当该类的class对象不再被 ...

  9. KMP(构建next数组)

    字符串匹配算法KMP, 核心思想是尽可能利用已经匹配的结果, 跳过尽可能多的不需要匹配的情况 重点和难点都在next数组的建立上 1. KMP算法的next数组求解 以模式串 a b a c a b ...

  10. 安装Keras

    在cmd窗口运行代码: pip install keras -U --pre 安装Keras: 进入Python环境,运行import keras,检验是否成功安装.