Android REST Client架构实践 第一篇
摘要:今年一直断断续续在做一个基于昊哥的一套很重的REST API的Android Client,其实也是第一次做Android,而且是按照Google I/O 2010 – Android REST client applications(请自行翻墙:)的指导做一个REST的客户端,遇到各种问题所以特地记录一下。第一篇就概述一下:
1.REST API以及我所调用的的REST API的特点
2.Google I/O大会上提出的Android REST Client的建议架构
一、关于REST API
REST架构的优势,广泛应用这些废话就不说了,网上的讨论都已经够多了,有兴趣的Google之吧,而REST的核心概念,解析这些我的另一个系列《REST学习实践》会陆续添加,这里就不赘述了。简单的说就是:1.用Url表示资源 2.对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法
二、从Dev角度总结我所调用的REST API的特点
1.提供两种Data Formats,JSON和XML,我用的JSON,插播一段JSON简介吧:
JSON是一种传递对象的语法,对象可以是name/value对,数组和其他对象。
下面是段JSON代码
1: {
2: "skillz": {
3: "web": [{
4: "name": "html",
5: "years": "5"
6: },
7: {
8: "name": "css",
9: "years": "3"
10: }],
11: "database": [{
12: "name": "sql",
13: "years": "7"
14: }]
15: }
16: }
使用JSON的原因主要是JSON的解析速度据称比XML快10倍,其实Javascript上用的更多一些,有比较好的支持。
2.Authentication 权限
由于REST本身并没有标准,所以似乎并没有对权限这块做什么规定,在一些需要登录使用的API上我们用的是一套类似于OAuth的授权机制:
a.向REST Service请求Login
b.取得一个临时Token
c.在一段时间内在HTTP Header带Token请求受保护的内容
至于Token的生成和更新就是Server端的工作了。
3.REST Request Url内嵌查询表达式
昊哥的REST Service提供了一套强大的查询表达式,类似于一个简单的编译器,Client可以在Request中带类似“q=AND(keyword:智能手机)(NOT(keyword:Nokia))(price:<1000)(city:~湖北~武汉)”来查询“在武汉1000元以下不是Nokia的智能手机”.
那么在这套REST API当中一个标准请求的Example就是
http://www.restexample.com/items/@all?c={PAGEINDEX}&max-results={PAGESIZE}&q={QUERYEXPRESSION}&orderby={ORDERBY}&partial={WANTEDFIELDS}
三、Google I/O 2010 Session上建议的Android REST Client App的架构
1.错误的范例
2.最佳范例
PS:关于昊哥很重的WCF REST Service,有兴趣的可传送至昊哥的Blog文章我的WCF4 Rest Service及Entity Framework with POCO之旅
No trackbacks yet.