AWS API Gateway 的Android SDKWord文档下载推荐.docx
《AWS API Gateway 的Android SDKWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《AWS API Gateway 的Android SDKWord文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。
APIname填写petstore。
Description填写AdemoAPIforAndroidSDK.。
点击CreateAPI按钮。
这时左侧导航链接会显示成APIs>
petstore>
Resources。
点击导航链接中的APIs>
Models。
这里已经显示有2个默认创建出来的Model。
我们点击Create按钮再来创建一个。
2.1.1Pets:
宠物列表的Model
Modelname*填写Pets
Contenttype*填写application/json
Modeldescription填写Alistofpets。
我们使用schema。
RootID填写pets。
我们直接访问http:
把得到的返回结果
[
{
"
id"
:
1,
type"
dog"
price"
249.99
},
2,
cat"
124.99
3,
fish"
0.99
}
]
帖到JSON栏中,其它选项保持不变,点击GenerateSchema按钮,结果生成在右侧的窗格中。
复制出来,粘贴到Modelschema格中即可。
点击CreatModel按钮保存完成。
2.1.2Pet:
宠物详情接口的Model
点击Create按钮再来创建一个。
Modelname*填写Pet。
Contenttype*填写application/json。
Modeldescription填写Apet。
我们再使用schema。
RootID填写pet。
{
}
复制出来,粘贴到Modelschema格中。
2.2配置API
2.2.1宠物列表接口
左侧导航链接点击APIs>
petstore>
保持最顶层的/为选中状态时,点击Actions下拉菜单,选择CreateResource。
ResourceName*填写pets
ResourcePath自动填写了pets。
然后点击CreateResource按钮。
这时刚刚创建的/pets应该是选中状态,再点击Actions下拉菜单,选择CreateMethod,在当时出现的方法菜单里选择GET,然后点后面的对号符确定。
然后在/pets-GET-Setup页,Integrationtype选HTTP。
EndpointURL填写http:
其它保持默认,点击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
2.2.1宠物详情接口
保持最顶层的/pets为选中状态时,点击Actions下拉菜单,选择CreateResource。
ResourceName*填写{petId}
ResourcePath自动填写了–petid-,把它删掉,改成{petId}。
这时刚刚创建的/{petId}应该是选中状态,再点击Actions下拉菜单,选择CreateMethod,在当时出现的方法菜单里选择GET,然后点后面的对号符确定。
然后在/pets/{petId}-GET-Setup页,Integrationtype选HTTP。
创建成功后,点击MethodRequest链接,在MethodRequest配置页,点击RequestPaths展开之,确认这里已经有一条petId了。
如果没有,请返回CreateResource步骤检查。
在ResponseBodyfor200下点击铅笔图标编辑之,把Model菜单下选择Pet,然后点击对勾图标保存。
QueryStrings下面{petId}输入1,然后点击Test按钮。
右侧会显示出如下结果,表示这个API已经配置成功。
/pets/1
357ms
2.3部署API并生成SDK
2.3.1部署API
Resources,Action菜单点击DeployAPI,在弹出层里
Deploymentstage菜单下拉选[NewStage]。
Stagename*填写test。
Stagedescription填写teststage。
Deploymentdescription填写firstdeploy。
点击Deploy按钮。
部署成功后会跳转到testStageEditor。
可以看到
InvokeURL:
形如https:
//abcde12345.execute-api.us-west-
我们把这个URL后面接上前述配置过的API路径,再来测试一下。
因为我们配置的没有AUTH难,所以可以简单的使用游览器直接访问,比如
可以得到宠物列表的JSON结果就表示部署成功了。
同理可以再测试一下
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"
aws-android-sdk-apigateway-core:
2.4+"
com.google.code.gson:
gson:
2.8.0'
然后按提示点击Syncnow同步项目。
这时会下载上述3个依赖库,视网络状态可能需要一些时间。
我们可以不用等待,继续后面的配置。
添加访问互联网权限,打开/app/src/main/AndroidManifest.xml,在<
application节点前面加上一行:
<
uses-permissionandroid:
name="
android.permission.INTERNET"
/>
我们打开之前下载的SDK压缩包解压的目录src/main/java/com/example/petstore,把下面的文件和目录
复制到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("
"
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:
+pet.getId()+"
+pet.getType()+"
+pet.getPrice();
//用弹出层演示在界面展示数据
runOnUiThread(newRunnable(){
@Override
publicvoidrun(){
newAlertDialog.Builder(self)
.setTitle("
Pet"
)
.setMessage(message)
.setPositiveButton(android.R.string.ok,null)
.create()
.show();
});
最后在onCreate()方法里加上如下代码,新开线程做HTTP请求,就可以了。
newThread(){
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之前曾长期从事互联网应用开发,先后在新浪、唯品会等公司担任架构师、技术总监等职位。
对跨平台多终端的互联网应用架构和方案有深入的研究。