API网关具备自动生成多语言SDK的能力

API网关为了实现客户端和服务器端之间的安全通讯,设计了全套的签名策略,只有携带通过复杂的签名算法的签名请求头的请求才会被API网关转发给后端服务器,否则请求会被API网关拒绝。这个连接是API签名算法的具体说明:https://help.aliyun.com/document_detail/29475.html,相信大家看到签名算法的介绍,会发现该签名算法有一定的复杂度,实现起来需要花费不少的时间,还需要和网关联调,有一定的工作量。

作为API网关的用户,要想正确得使用API网关的各项能力,就需要自己在客户端实现API网关定义签名算法。还有一个选项就是,使用API网关官方提供的SDK。本文不是给大家介绍签名算法的,而是给大家介绍API网关的SDK生成能力。

首先,API网关按照使用用户的不同分别给API提供者(Provider)和API使用者(Consumer)提供了不同的SDK生成入口。对于Provider而言,他们可以在API网关自动生成他们拥有的Group下的所有线上API的调用SDK。Consumer则可以在API网关下载基于应用(App)维度的SDK,比如consumer的一个应用(App)购买了并被授权拥有A,B,C三个API,那么consumer可以在API网关一键生成A,B,C三个API的调用SDK,不管这三个接口是否属于同一个API供应商,都能在一个SDK包能下载下来。

下面是API网关为API提供者(Provider)提供的SDK生成页面,左边API网关->开放API->SDK/文档自动生成是页面的入口。我们可以看到,Provider可以选择Region和Group来生成指定语言的SDK。

下面是API网关为API使用者(Consumer)提供的SDK生成页面,左边API网关->调用API->已授权API的SDK 是页面的入口。我们可以看到,Consumer可以选择指定应用(App)来生成指定语言的SDK。

API网关目前提供iOS,Android两种移动客户端的SDK的自动生成功能,基本覆盖了绝大部分移动客户端。API网关还提供大众语言Java的SDK的自动生成功能。后继,我们还会陆续推出PHP,Python,.NET,Node.js等主流语言的SDK的自动生成能力。

下面我们介绍下API网关自动生成的SDK压缩包内的文件结构,以Android为例,其他语言的都比较类似:

  • SDK文件夹

    • sdk

      • Demo_{{groupName}}.java Api调用示例
      • SyncApiClient_{{groupName}}.java 对应Group的所有API同步接口实现,直接调用本类实现Api调用
      • AsyncApiClient_{{groupName}}.java 对应Group的所有API接口异步实现,直接调用本类实现Api调用
      • AppConfigurationInitializer.java APP秘钥配置类,使用API调用之后需要先配置本类
    • lib
      • alibaba-cloudapi-sdk-core-1.0.1.jar sdk的core包,实现底层通信
    • src sdk文件夹中使用的alibaba-cloudapi-sdk-core-1.0.1.jar的源码
      • CloudApiSdk.java SDK处理HTTP请求的类
      • AppConfiguration.java SDK配置类
      • SignUtil.java 签名的实现类
      • HttpConstant.java SDK用到的Http常量
      • SDKConstant.java SDK内部用到的常量
      • CallMethod.java 同步、异步枚举
    • doc
      • ApiDocument_{{groupName}}.md 对应Group的API接口文档
    • Readme.md SDK使用指南
    • LICENSE 版权许可说明

本SDK非常容易使用,完全按照Readme配置后以后,就可以像SDK的Demo那样调用API接口了,下面是一个非常简单的调用示例:

public static void testPathSyncTest(){
        SyncApiClient_GroupName.testPath("test" , "test" , "test" , new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                String result = e.getMessage();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result= getResultString(response);
            }
        });
    }

SDK压缩包中有所有涉及的API的MD格式的相关文档,包括API描述信息,参数信息,请求信息及应答、错误码等所有信息,下面是一个截图:

如果在使用中遇到棘手的问题,请加入我们官方旺旺群来找我们,群号:1640106170

时间: 2024-09-29 06:25:37

API网关具备自动生成多语言SDK的能力的相关文章

API网关统一管理企业内部API

互联网公司随着业务的发展,公司规模会日益扩张,公司的业务也会越来越丰富,公司内部的部门也会越来越多,不同的业务会有不同的部门来负责,每个部门都有自己的一亩三分地.作为互联网公司,每个部门也或多或少有一些能力对外开放.这些能力都会以API的形式提供给外部.这些API分散在各个部门的服务器上,可能提供的形式.协议.SDK都不一样.公司越大这些API就会变得越来越分散,形态差异越大,一个部门要使用其他部门的API时,需要去每个部门找API相关负责人要来API文档,接口地址及SDK等等,内部协作的效率很

API网关,让Serverless服务开放更加迅速

本文PPT来自产品经理谢文龙于10月16日在2016年杭州云栖大会上发表的<使用API网关快速开放Serverless服务>. 现在Serverless变得愈加流行和普遍,主流的Serverless服务一般按照实现的不同可分为两种:BAAS(Backend as a Service)和 FAAS(Function as Service).其中BAAS是指服务商为移动应用开发者提供后端服务.数据库.文件存储等资源,FAAS则通过功能组合来实现应用逻辑. 在Serverless模式下,跨平台.无状

API网关遇上容器服务

在API经济和微服务的背景下,如何对服务的API进行管理是大家都很感兴趣的话题.本文通过利用阿里云的容器服务和API网关,构建一个完整的基于Docker的具有API管理功能的服务. API管理 假定我们需要这么一个经典的后端服务,访问如下API接口的时候返回Hello World: $ curl http://apisvc.hostxx/api <p>Hello World</p> 这个服务推出后广受欢迎,但是烦恼总是伴随幸福不期而至: 对API进行计费怎么做? 外界访问API的流

实践篇:搭建无服务器应用--函数计算+API网关+云市场(提供手机号归属地查询服务)

6月5日,阿里云的API网关上线了一个新功能,用户定义API后端服务时可以选择使用Function Compute,这样API网关的用户直接使用函数计算的技术能力,这也使得API网关具备可扩展的后端应用,与此同时函数计算也享受到API网关带来的诸多的好处,例如API的请求流量管控.安全鉴权.访问监控.统计等等. 下面我做一个简单的例子,把函数计算+API网关+云市场三者结合起来,提供一个能查询手机号归属地的服务,在这个框架里不需要配置WEB容器.不需要搭建运行环境.不需要购买负载均衡,通过配置和

gitignore.io ------ 一个根据语言,工具或者平台来智能自动生成gitignore文件的在线工具

根据用户输入的语言类型或者平台类型,自动生成对应的gitignore文件. 例如,输入android,eclipse,点击"Genernate"即可. 得到gitignore文件: # Generated by http://gitignore.io ### Android ### # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generat

帮你捋顺 API 网关的 API、SDK和错误排查

API 网关的特殊之处   用户使用 API 网关开放 API 服务,或者调用其他人开放的 API 服务.而且 API 网关自身也开放了管理接口 API.所以用户使用时需要弄清楚两套 API.两套 SDK.两套错误码.这里把这些资源整理一下,方便大家正确使用和问题排查. 开发资源List   APIs   用户在 API 网关开放的 API 服务,如天气查询 API等   API 网关开放的管理接口,用于使用产品,如创建 API等   SDKs   API 网关为天气查询等用户开放的 API 服

C语言自动生成enum值和名字映射代码_C 语言

这年头好像继续做C语言的人不多了,年轻人大多去互联网和移动应用.确实,那两个领域现在来钱快,且总是供不应求.就说刚刚在一个旧同事的微信群里,有人刚放出自己有团队可以做App几分钟,哇塞,好几个人说有项目,要求加好友私聊.我也想过转行,可惜人老珠黄,没有互联网或是应用团队愿意接收.估计再过些年,C程序世界里就只有我这样的小老头们继续自娱自乐了,羡慕死年轻人了! 平常工作中,经常要做一些打印,或是日志.而这里面,enum类型的数据就很多,如果只是打印出它的整数值,显然会让测试人员很恼火,鬼知道那数字

不要被C++(自动生成规则)所蒙骗_C 语言

C++对象可以使用两种方式进行创建:构造函数和复制构造函数.假如我们定义了类A,并使用它创建对象. 复制代码 代码如下: A a,b; A c=a; A d(b); 对象a和b使用编译器提供的默认构造函数A::A()创建出来,我们称这种创建方式为对象的定义(包含声明的含义).对象c和d则是使用已有的对象,通过编译器提供的复制构造函数A::A(const A&)创建,我们称这种创建方式为对象的初始化(包含定义和声明的含义). 可能不少人会把对象的初始化和对象的赋值混淆,比如. 复制代码 代码如下:

怎么通过C语言自动生成MAC地址_C 语言

最近在做虚拟机项目时,需要给创建的每一个虚拟机自动生成一个MAC地址,由于MAC地址为48位,而且格式是以:隔开的,所以下面我写了一个c程序,来自动生成MAC地址. 复制代码 代码如下: //   MAC.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<unistd.h> #define RANDOM(x) (rand()%x)#define MAC_ADDR_LENGTH 12#de