1、API name填写petstore。Description 填写A demo API for Android SDK.。点击Create API按钮。这时左侧导航链接会显示成APIs petstore Resources。点击导航链接中的APIs Models。这里已经显示有2个默认创建出来的Model。我们点击Create按钮再来创建一个。2.1.1 Pets: 宠物列表的 ModelModel name* 填写PetsContent type* 填写application/jsonModel description 填写A list of pets。我们使用 schema。Root ID
2、 填写pets。我们直接访问http:把得到的返回结果 id: 1,typedog,price 249.99 , 2,cat 124.99 3,fish 0.99 帖到JSON 栏中,其它选项保持不变,点击Generate Schema按钮,结果生成在右侧的窗格中。复制出来,粘贴到Model schema 格中即可。点击Creat Model按钮保存完成。2.1.2 Pet: 宠物详情接口的 Model点击Create按钮再来创建一个。Model name* 填写Pet。Content type* 填写application/json。Model description 填写A pet。我们再
3、使用 schema。Root ID 填写pet。复制出来,粘贴到Model schema 格中。2.2配置API2.2.1 宠物列表接口左侧导航链接点击APIs petstore保持最顶层的 /为选中状态时,点击Actions 下拉菜单,选择CreateResource。Resource Name* 填写petsResource Path 自动填写了 pets。然后点击CreateResource按钮。这时刚刚创建的/pets应该是选中状态,再点击Actions 下拉菜单,选择Create Method,在当时出现的方法菜单里选择GET,然后点后面的对号符确定。然后在/pets - GET -
4、 Setup页,Integration type 选HTTP。Endpoint URL填写http:其它保持默认,点击Save按钮。创建成功后,点击Method Request 链接,在 Method Request配置页,点击URL Query String Parameters 展开之。点击 Add query string 增加一个参数 type ,点击 Add query string 增加第二个参数page。其它项保持默认。点击Method Execution 链接返回,点击Method Response链接。在Method Response配置页,点击 200 左边的三角形,展开响
5、应详情。在Response Body for 200下点击铅笔图标编辑之,把Model菜单下选择Pets,然后点击对勾图标保存。点击Method Execution 链接返回,点击TEST链接,我们来测试一下。Query Strings 下面 type输入dog,page输入1,然后点击 Test按钮。右侧会显示出形如如下结果,表示这个API已经配置成功。Request:/pets?type=dog&page=1Status: 200Latency: 271 msResponse Body2.2.1 宠物详情接口保持最顶层的 /pets 为选中状态时,点击Actions 下拉菜单,选择Crea
6、teResource。Resource Name* 填写petIdResource Path 自动填写了petid-,把它删掉,改成petId。这时刚刚创建的/petId应该是选中状态,再点击Actions 下拉菜单,选择Create Method,在当时出现的方法菜单里选择GET,然后点后面的对号符确定。然后在/pets/petId - GET - Setup页,Integration type 选HTTP。创建成功后,点击Method Request链接,在 Method Request配置页,点击Request Paths展开之,确认这里已经有一条petId了。如果没有,请返回Creat
7、e Resource 步骤检查。在Response Body for 200下点击铅笔图标编辑之,把Model菜单下选择Pet,然后点击对勾图标保存。Query Strings下面petId输入1,然后点击 Test按钮。右侧会显示出如下结果,表示这个API已经配置成功。/pets/1 357 ms2.3部署API并生成SDK2.3.1 部署API Resources,Action 菜单点击 Deploy API,在弹出层里Deployment stage菜单下拉选New Stage。Stage name*填写 test。Stage description填写 test stage。Deplo
8、yment description填写 first deploy。点击 Deploy 按钮。部署成功后会跳转到test Stage Editor。可以看到Invoke URL: 形如https:/abcde12345.execute-api.us-west-我们把这个 URL 后面接上前述配置过的API路径,再来测试一下。因为我们配置的没有AUTH难,所以可以简单的使用游览器直接访问,比如可以得到宠物列表的JSON结果就表示部署成功了。同理可以再测试一下2.3.1 生成SDK在test Stage Editor页点击SDK Generation选项卡,Platform*选Android。下面展
9、开的内容,都和我们即将开发的Android App 包名有关,我们先定好包名为com.example.petstore。相应的这里几项这样填写:Group ID 填写com.exampleInvoker package 填写完整包名com.example.petstoreArtifact ID 填写petstoreArtifact version 填写自己编排的版本号,比如1.0.0然后点击Generate SDK按钮,弹出下载文件对话框,保存到本机即可。这是一个ZIP压缩包,解压可以得到以下目录和文件。 build.gradle LICENSE.txt NOTICE.txt pom.xml
10、README.mdsrcmainjavacomexamplepetstore PetstoreClient.javamodel Pet.java Pets.java PetsItem.java先放在这备用。下面我们用 Android Studio 开始做 App 项目。3. Android 开发整合SDK3.1 创建一个新的Android项目我们打开Android Studio,新建一个项目,Application name 填写 Petstore,Company domain 填写,从而Package name 成为com.example.petstore,和我们前面生成SDK 时使用的包名
11、保持一致。然后一路点击Next,使用默认配置(Empty Activity,Activity Name是MainActivity,Layout Name是activity_main)创建一个项目。3.2 整合API Gateway生成的Android SDK使用 API Gateway生成的SDK其实有官方文档:但是我们今天用更简便的方法,直接用build.gradle管理包,不需要按官方文档那样安装Maven再编译等。项目创建起来后,我们在Project面板启用Project视图。打开app/build.gradle,在dependencies段添加以下几行,其实就是AWS SDK 的核心包
12、,API Gateway的包以及用于解析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然后按提示点击Sync now同步项目。这时会下载上述3个依赖库,视网络状态可能需要一些时间。我们可以不用等待,继续后面的配置。添加访问互联网权限, 打开/app/src/main/AndroidManifest.xml,在application 节点前面加上一行:我们打开之前下载的SDK压
13、缩包解压的目录src/main/java/com/example/petstore,把下面的文件和目录复制到 Android项目中 com.example.petstore下面。完成的样子如下图所示:3.3 编写代码用SDK实现调用API我们使用Cognito进行验证,所以需要先创建一个Cognito 的 Federated identity pool,有关方法请参阅相关文档,这里不再赘述。在Android Studio里打开 MainActivity.java。先定义2个常量public static final String TAG = petstore_MainActivity;publ
14、ic static final String COGNITO_POOL_ID = us-west-2:xxxxxxxx然后我们定义一个testPet() 方法。private void testPet() / 使用Cognito进行验证AWSCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), /当前活动的ContextCOGNITO_POOL_ID, / Cognito identity pool id /TODO 把这个区域设置成你的
15、Cognito 所在的区域Regions.US_WEST_2);/ 使用 ApiClientFactory 工厂方法来生成SDK 的客户端实例。ApiClientFactory factory = new ApiClientFactory().credentialsProvider(credentialsProvider); PetstoreClient client = factory.build(PetstoreClient.class);/ 对API接口的调用已经封装成相应的方法,比如 /pets 接口的GET方法,对应 petsGet() 方法。 / 具体的方法说明可以点击petsGe
16、t 方法名上的链接,跳转到PetstoreClient.java中查看源码。Pets pets = client.petsGet(, 1/ 列表中的每个项目可以用 get() 方法获取PetsItem item = pets.get(0);/ 我们这里只使用Log.d() 方法打印出日志信息。Log.d(TAG, one item in pet list: id= + item.getId() + , type= + item.getType() + , price= + item.getPrice();/ 调用详情接口String petId = 2 Pet pet = client.pet
17、sPetIdGet(petId);final String message = pet: + pet.getId() + + pet.getType() + + pet.getPrice();/ 用弹出层演示在界面展示数据runOnUiThread(new Runnable() Overridepublic void run() new AlertDialog.Builder(self) .setTitle(Pet) .setMessage(message) .setPositiveButton(android.R.string.ok, null) .create() .show(); );最
18、后在onCreate()方法里加上如下代码,新开线程做HTTP请求,就可以了。new Thread() super.run(); testPet();.start();到这里例子已经完成,我们运行一个App,顺利地话可以看到如下的日志输出,我们已经可以顺利得到API接口的响应结果了。这是在模拟器上运行的弹出层效果的截图。例子的源码在下面 git库的Petstore 目录,供大家参考。使用时请记得把MainActivity.java里的COGNITO_POOL_ID 换成你自己真实的值,以及new CognitoCachingCredentialsProvider 时要使用你的COGNITO_P
19、OOL_ID所在的region 值。4. 小结Amazon API Gateway生成的客户端SDK主要功能包括以下几点: 根据我们为各个接口定义的Model批量创建好相应的Model类。 通过AWS 核心SDK实现HTTP请求的验证。 封装HTTP请求和响应。 把响应结果通过Gson库转换成方便Android Java使用的Model类。这个简单的例子也体现出生成的客户端SDK便利了客户端应用程序的开发。作者介绍:薛峰,亚马逊AWS解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内和全球的应用和推广,在大规模并发应用架构、移动应用以及无服务器架构等方面有丰富的实践经验。在加入AWS之前曾长期从事互联网应用开发,先后在新浪、唯品会等公司担任架构师、技术总监等职位。对跨平台多终端的互联网应用架构和方案有深入的研究。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2