AWS API Gateway 的Android SDK.docx

上传人:b****2 文档编号:1660656 上传时间:2023-05-01 格式:DOCX 页数:16 大小:243.84KB
下载 相关 举报
AWS API Gateway 的Android SDK.docx_第1页
第1页 / 共16页
AWS API Gateway 的Android SDK.docx_第2页
第2页 / 共16页
AWS API Gateway 的Android SDK.docx_第3页
第3页 / 共16页
AWS API Gateway 的Android SDK.docx_第4页
第4页 / 共16页
AWS API Gateway 的Android SDK.docx_第5页
第5页 / 共16页
AWS API Gateway 的Android SDK.docx_第6页
第6页 / 共16页
AWS API Gateway 的Android SDK.docx_第7页
第7页 / 共16页
AWS API Gateway 的Android SDK.docx_第8页
第8页 / 共16页
AWS API Gateway 的Android SDK.docx_第9页
第9页 / 共16页
AWS API Gateway 的Android SDK.docx_第10页
第10页 / 共16页
AWS API Gateway 的Android SDK.docx_第11页
第11页 / 共16页
AWS API Gateway 的Android SDK.docx_第12页
第12页 / 共16页
AWS API Gateway 的Android SDK.docx_第13页
第13页 / 共16页
AWS API Gateway 的Android SDK.docx_第14页
第14页 / 共16页
AWS API Gateway 的Android SDK.docx_第15页
第15页 / 共16页
AWS API Gateway 的Android SDK.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

AWS API Gateway 的Android SDK.docx

《AWS API Gateway 的Android SDK.docx》由会员分享,可在线阅读,更多相关《AWS API Gateway 的Android SDK.docx(16页珍藏版)》请在冰点文库上搜索。

AWS API Gateway 的Android SDK.docx

AWSAPIGateway的AndroidSDK

APIGateway的AndroidSDK

1.背景介绍

AmazonAPIGateway是一种完全托管的服务,可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的API。

作为无服务器架构中的一个重要组成部分,已经有越来越多的用户熟悉并使用AmazonAPIGateway。

为了让大家更轻松地调用生成的API,AmazonAPIGateway还提供了生成客户端SDK的功能,目前支持的客户端语言包括Java、JavaScript、iOS(Object-C)、iOS(Swift)和Android。

今天,我们通过一个具体的例子演示一下AndroidSDK,帮助大家快速上手,更方便轻松地使用AmazonAPIGateway。

2.配置部署API

我们参考官方文档中的宠物店这个例子,配置一套代理HTTP接口的API。

我们简化接口定义,以便突出AndroidSDK的使用,只做2个接口:

/pets

方法:

GET

参数:

typeString宠物类型

pageint页码

/pets/{id}

方法:

GET

参数:

2.1创建Model

我们的API代理的后端接口还是这个宠物店的接口

http:

//petstore-demo-endpoint.execute-

我们先根据其返回结果创建相关的结果数据模型。

我们以Oregon区域为例,打开AmazonAPIGateway管理控制台

https:

//us-west-

点击CreateAPI

保持NewAPI选中不变。

APIname填写petstore。

Description填写AdemoAPIforAndroidSDK.。

点击CreateAPI按钮。

这时左侧导航链接会显示成APIs>petstore>Resources。

点击导航链接中的APIs>petstore>Models。

这里已经显示有2个默认创建出来的Model。

我们点击Create按钮再来创建一个。

2.1.1Pets:

宠物列表的Model

Modelname*填写Pets

Contenttype*填写application/json

Modeldescription填写Alistofpets。

我们使用schema。

RootID填写pets。

我们直接访问http:

//petstore-demo-endpoint.execute-

把得到的返回结果

[

{

"id":

1,

"type":

"dog",

"price":

249.99

},

{

"id":

2,

"type":

"cat",

"price":

124.99

},

{

"id":

3,

"type":

"fish",

"price":

0.99

}

]

帖到JSON栏中,其它选项保持不变,点击GenerateSchema按钮,结果生成在右侧的窗格中。

复制出来,粘贴到Modelschema格中即可。

点击CreatModel按钮保存完成。

2.1.2Pet:

宠物详情接口的Model

点击Create按钮再来创建一个。

Modelname*填写Pet。

Contenttype*填写application/json。

Modeldescription填写Apet。

我们再使用schema。

RootID填写pet。

我们直接访问http:

//petstore-demo-endpoint.execute-

把得到的返回结果

{

"id":

1,

"type":

"dog",

"price":

249.99

}

帖到JSON栏中,其它选项保持不变,点击GenerateSchema按钮,结果生成在右侧的窗格中。

复制出来,粘贴到Modelschema格中。

点击CreatModel按钮保存完成。

2.2配置API

2.2.1宠物列表接口

左侧导航链接点击APIs>petstore>Resources。

保持最顶层的/为选中状态时,点击Actions下拉菜单,选择CreateResource。

ResourceName*填写pets

ResourcePath自动填写了pets。

然后点击CreateResource按钮。

这时刚刚创建的/pets应该是选中状态,再点击Actions下拉菜单,选择CreateMethod,在当时出现的方法菜单里选择GET,然后点后面的对号符确定。

然后在/pets-GET-Setup页,Integrationtype选HTTP。

EndpointURL填写http:

//petstore-demo-endpoint.execute-

其它保持默认,点击Save按钮。

创建成功后,点击MethodRequest链接,在MethodRequest配置页,点击URLQueryStringParameters展开之。

点击Addquerystring增加一个参数type,点击Addquerystring增加第二个参数page。

其它项保持默认。

点击MethodExecution链接返回,点击MethodResponse链接。

在MethodResponse配置页,点击200左边的三角形,展开响应详情。

在ResponseBodyfor200下点击铅笔图标编辑之,把Model菜单下选择Pets,然后点击对勾图标保存。

点击MethodExecution链接返回,点击TEST链接,我们来测试一下。

QueryStrings下面type输入dog,page输入1,然后点击Test按钮。

右侧会显示出形如如下结果,表示这个API已经配置成功。

Request:

 /pets?

type=dog&page=1

Status:

200

Latency:

271ms

ResponseBody

[

{

"id":

1,

"type":

"dog",

"price":

249.99

},

{

"id":

2,

"type":

"dog",

"price":

124.99

},

{

"id":

3,

"type":

"dog",

"price":

0.99

}

]

2.2.1宠物详情接口

左侧导航链接点击APIs>petstore>Resources。

保持最顶层的/pets为选中状态时,点击Actions下拉菜单,选择CreateResource。

ResourceName*填写{petId}

ResourcePath自动填写了–petid-,把它删掉,改成{petId}。

然后点击CreateResource按钮。

这时刚刚创建的/{petId}应该是选中状态,再点击Actions下拉菜单,选择CreateMethod,在当时出现的方法菜单里选择GET,然后点后面的对号符确定。

然后在/pets/{petId}-GET-Setup页,Integrationtype选HTTP。

EndpointURL填写http:

//petstore-demo-endpoint.execute-

其它保持默认,点击Save按钮。

创建成功后,点击MethodRequest链接,在MethodRequest配置页,点击RequestPaths展开之,确认这里已经有一条petId了。

如果没有,请返回CreateResource步骤检查。

点击MethodExecution链接返回,点击MethodResponse链接。

在MethodResponse配置页,点击200左边的三角形,展开响应详情。

在ResponseBodyfor200下点击铅笔图标编辑之,把Model菜单下选择Pet,然后点击对勾图标保存。

点击MethodExecution链接返回,点击TEST链接,我们来测试一下。

QueryStrings下面{petId}输入1,然后点击Test按钮。

右侧会显示出如下结果,表示这个API已经配置成功。

Request:

 /pets/1

Status:

200

Latency:

357ms

ResponseBody

{

"id":

1,

"type":

"dog",

"price":

249.99

}

2.3部署API并生成SDK

2.3.1部署API

左侧导航链接点击APIs>petstore>Resources,Action菜单点击DeployAPI,在弹出层里

Deploymentstage菜单下拉选[NewStage]。

Stagename*填写test。

Stagedescription填写teststage。

Deploymentdescription填写firstdeploy。

点击Deploy按钮。

部署成功后会跳转到testStageEditor。

可以看到

InvokeURL:

形如https:

//abcde12345.execute-api.us-west-

我们把这个URL后面接上前述配置过的API路径,再来测试一下。

因为我们配置的没有AUTH难,所以可以简单的使用游览器直接访问,比如

https:

//abcde12345.execute-api.us-west-

可以得到宠物列表的JSON结果就表示部署成功了。

同理可以再测试一下

https:

//abcde12345.execute-api.us-west-

2.3.1生成SDK

在testStageEditor页点击SDKGeneration选项卡,Platform*选Android。

下面展开的内容,都和我们即将开发的AndroidApp包名有关,我们先定好包名为com.example.petstore。

相应的这里几项这样填写:

GroupID填写com.example

Invokerpackage填写完整包名com.example.petstore

ArtifactID填写petstore

Artifactversion填写自己编排的版本号,比如1.0.0

然后点击GenerateSDK按钮,弹出下载文件对话框,保存到本机即可。

这是一个ZIP压缩包,解压可以得到以下目录和文件。

│build.gradle

│LICENSE.txt

│NOTICE.txt

│pom.xml

│README.md

└─src

└─main

└─java

└─com

└─example

└─petstore

│PetstoreClient.java

└─model

Pet.java

Pets.java

PetsItem.java

先放在这备用。

下面我们用AndroidStudio开始做App项目。

3.Android开发整合SDK

3.1创建一个新的Android项目

我们打开AndroidStudio,新建一个项目,Applicationname填写Petstore,Companydomain填写,从而Packagename成为com.example.petstore,和我们前面生成SDK时使用的包名保持一致。

然后一路点击Next,使用默认配置(EmptyActivity,ActivityName是MainActivity,LayoutName是activity_main)创建一个项目。

3.2整合APIGateway生成的AndroidSDK

使用APIGateway生成的SDK其实有官方文档:

但是我们今天用更简便的方法,直接用build.gradle管理包,不需要按官方文档那样安装Maven再编译等。

项目创建起来后,我们在Project面板启用Project视图。

打开app/build.gradle,在dependencies段添加以下几行,其实就是AWSSDK的核心包,APIGateway的包以及用于解析JSON的gson包。

compile'com.amazonaws:

aws-android-sdk-core:

2.4.+'

compile"com.amazonaws:

aws-android-sdk-apigateway-core:

2.4+"

compile'com.google.code.gson:

gson:

2.8.0'

然后按提示点击Syncnow同步项目。

这时会下载上述3个依赖库,视网络状态可能需要一些时间。

我们可以不用等待,继续后面的配置。

添加访问互联网权限,打开/app/src/main/AndroidManifest.xml,在

name="android.permission.INTERNET"/>

我们打开之前下载的SDK压缩包解压的目录src/main/java/com/example/petstore,把下面的文件和目录

│PetstoreClient.java

└─model

Pet.java

Pets.java

PetsItem.java

复制到Android项目中com.example.petstore下面。

完成的样子如下图所示:

3.3编写代码用SDK实现调用API

我们使用Cognito进行验证,所以需要先创建一个Cognito的Federatedidentitypool,有关方法请参阅相关文档,这里不再赘述。

在AndroidStudio里打开MainActivity.java。

先定义2个常量

publicstaticfinalStringTAG="petstore_MainActivity";

publicstaticfinalStringCOGNITO_POOL_ID="us-west-2:

xxxxxxxx";

然后我们定义一个testPet()方法。

privatevoidtestPet(){

//使用Cognito进行验证

AWSCredentialsProvidercredentialsProvider=newCognitoCachingCredentialsProvider(

getApplicationContext(),//当前活动的Context

COGNITO_POOL_ID,//Cognitoidentitypoolid

//TODO把这个区域设置成你的Cognito所在的区域

Regions.US_WEST_2

);

//使用ApiClientFactory工厂方法来生成SDK的客户端实例。

ApiClientFactoryfactory=newApiClientFactory().credentialsProvider(credentialsProvider);

PetstoreClientclient=factory.build(PetstoreClient.class);

//对API接口的调用已经封装成相应的方法,比如/pets接口的GET方法,对应petsGet()方法。

//具体的方法说明可以点击petsGet方法名上的链接,跳转到PetstoreClient.java中查看源码。

Petspets=client.petsGet("dog","1");

//列表中的每个项目可以用get()方法获取

PetsItemitem=pets.get(0);

//我们这里只使用Log.d()方法打印出日志信息。

Log.d(TAG,"oneiteminpetlist:

id="+item.getId()+",type="+item.getType()+",price="+item.getPrice());

//调用详情接口

StringpetId="2";

Petpet=client.petsPetIdGet(petId);

finalStringmessage="pet:

id="+pet.getId()+",type="+pet.getType()+",price="+pet.getPrice();

//用弹出层演示在界面展示数据

runOnUiThread(newRunnable(){

@Override

publicvoidrun(){

newAlertDialog.Builder(self)

.setTitle("Pet")

.setMessage(message)

.setPositiveButton(android.R.string.ok,null)

.create()

.show();

}

});

}

最后在onCreate()方法里加上如下代码,新开线程做HTTP请求,就可以了。

newThread(){

@Override

publicvoidrun(){

super.run();

testPet();

}

}.start();

到这里例子已经完成,我们运行一个App,顺利地话可以看到如下的日志输出,我们已经可以顺利得到API接口的响应结果了。

这是在模拟器上运行的弹出层效果的截图。

例子的源码在下面git库的Petstore目录,供大家参考。

使用时请记得把MainActivity.java里的COGNITO_POOL_ID换成你自己真实的值,以及newCognitoCachingCredentialsProvider时要使用你的COGNITO_POOL_ID所在的region值。

4.小结

AmazonAPIGateway生成的客户端SDK主要功能包括以下几点:

∙根据我们为各个接口定义的Model批量创建好相应的Model类。

∙通过AWS核心SDK实现HTTP请求的验证。

∙封装HTTP请求和响应。

∙把响应结果通过Gson库转换成方便AndroidJava使用的Model类。

这个简单的例子也体现出生成的客户端SDK便利了客户端应用程序的开发。

作者介绍:

薛峰,亚马逊AWS解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内和全球的应用和推广,在大规模并发应用架构、移动应用以及无服务器架构等方面有丰富的实践经验。

在加入AWS之前曾长期从事互联网应用开发,先后在新浪、唯品会等公司担任架构师、技术总监等职位。

对跨平台多终端的互联网应用架构和方案有深入的研究。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2