RESTful Android API 定义

约定

  • 回复中默认包含标头:
    Content-Type: application/json;charset=UTF-8

  • 异步操作以(*)号标记

  • 大多数异步操作同时只能有一个任务在进行,以上传联系人为例:

    1. 客户端每次提交 POST /persons/uploader服务器放弃进行中的上传任务而新建;

    2. 客户端可以先访问GET /persons/uploader 获得当前是否有正在上传的任务;

    3. 服务器遇到错误的时候会将任务挂起,返回错误原因,客户端可以选择重试或者终止;

    4. 客户端接收到任务失败的响应后,如果响应中不包括retry的链接,则不应该重试;

  • 授权失败将返回403 Forbidden,客户端应该提示用户进行授权,同时进行重试。

联系人

URI 定义

接口 HTTP method URI
获取所有联系人 GET /persons?pagesize={pagesize}&start={start}
删除所有联系人* POST /persons/purge
上传联系人* POST /persons/uploader
获取联系人信息 GET /persons/{id}
新建联系人 POST /persons
编辑联系人 PUT /persons/{id}
删除联系人 DELETE /persons/{id}

示例

获取所有联系人

GET /persons?pagesize=10&start=0

  1. 200 OK
  2. {
  3. total: 100,
  4. links:
  5. [
  6. {rel: "self", href: "/persons?pagesize=10&start=10"},
  7. {rel: "pre", href: "/persons?pagesize=10&start=0"},
  8. {rel: "next", href: "/persons?pagesize=10&start=20"}
  9. ],
  10. persons:
  11. [
  12. {
  13. link: {rel: "self", href: "/person/1"}, id: "1", name: "Jack"//...
  14. },
  15. {
  16. link: {rel: "self", href: "/person/2"}, id: "2", name: "Lucy"//...
  17. }
  18. ]
  19. }

删除所有联系人*

GET /persons/purge

  1. 200 OK
  2. {
  3. link: {rel: "self", href="/persons/purge/0"} //一般不关心上次任务的状态,所以表述中没有捎带其状态
  4. }

不使用DELETE /persons, /persons资源仍然可以访问

POST /persons/purge

  1. 202 Accpeted
  2. {
  3. link: {rel: "self", href="/persons/purge/0"}
  4. }

GET /persons/purge/0

进行中

  1. 200 OK
  2. {
  3. link: {rel: "self", href="/persons/purge/0"},
  4. state: "pending",
  5. percent: "30"
  6. }

成功

  1. 303 See Other
  2. Location: "/persons"
  3. {
  4. link: {rel: "self", href="/persons/purge/0"},
  5. state: "done"
  6. }

失败

  1. 200 OK
  2. {
  3. links:
  4. [
  5. {rel: "self", href="/persons/purge/0"},
  6. {rel: "retry", href="/persons/purge/0"}
  7. ]
  8. state: "failed",
  9. reason: "XXX",
  10. }

重试

PUT /persons/purge/0

  1. 200 OK

终止

DELETE /persons/purge/0

  1. 200 OK

上传联系人*

GET /persons/uploader

  1. 200 OK
  2. {
  3. link: {rel: "self", href="/persons/uploader/0"}}
  4. }

POST /persons/uploader

[
{name: "Jack"},
{name: "Lucy"},
{name: "Lily"}
]

  1. 202 Accepted
  2. {
  3. link: {rel: "self", href="/persons/uploader/0"}}
  4. }

GET /persons/uploader

进行中

  1. 200 OK
  2. {
  3. link: {rel: "self", href="/persons/uploader/0"},
  4. state: "pending",
  5. percent: "30"
  6. }

成功

  1. 303 See Other
  2. Location: "/persons"
  3. {
  4. link: {rel: "self", href="/persons/uploader/0"},
  5. state: "done"
  6. }

失败

  1. 200 OK
  2. {
  3. links:
  4. [
  5. {rel: "self", href="/persons/uploader/0"},
  6. {rel: "retry", href="/persons/uploader/0"}
  7. ]
  8. state: "failed",
  9. reason: "XXX"
  10. }

重试

PUT /persons/uploader/0

  1. 200 OK

终止

DELETE /persons/uploader/0

  1. 200 OK

获取联系人信息

GET /person/1

  1. 200 OK
  2. {
  3. link: {rel: "self", href: "/person/1"}, id: "1", name: "Jack"//...
  4. }

新建联系人

POST /persons

{
name: "Jack"//...
}

  1. 201 Created
  2. {
  3. link: {rel: "self", href: "/person/1"}, id: "1", name: "Jack"//...
  4. }

编辑联系人

PUT /person/1

{
name: "Jack"//...
}

  1. 200 OK
  2. {
  3. link: {rel: "self", href: "/person/1"}, id: "1", name: "Jack"//...
  4. }

删除联系人

DELETE /person/1

  1. 200
  2. {
  3. name: "Jack"//...
  4. }

参考

HTTP Method Definitions

RESTful Android的更多相关文章

  1. Android教程收集贴

    Loader & REST Rest Loader Tutorial [github源码] [源码演示] [github作者主页] Twitter Timeline Sample for An ...

  2. 用Jersey为Android客户端开发Restful Web Service

    平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关 ...

  3. SSM整合 完美支持RESTful(Jsp和客户端<android ios...>)

    一 RESTful简介 RESTful是一种网络应用程序的设计风格和开发方式 它结构清晰 符合标准 易于理解 扩展方便 REST 即Representational State Transfer的缩写 ...

  4. Android,适合Restful网络请求封装

    借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...

  5. 2015最流行的Android组件、工具、框架大全

    Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...

  6. [转] Android优秀开源项目

    Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...

  7. Android开发笔记之《远程控制(MQTT|mosquitto) && (ProtocalBuffer | GRPC)》

    Android推送方案分析(MQTT/XMPP/GCM): http://www.open-open.com/lib/view/open1410848945601.htmlMQTT官网: http:/ ...

  8. Android高手速成--第二部分 工具库

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

  9. Android 多媒体视频播放一( 多媒体理解与经验分享)

    前言 说到android的多媒体,一把辛酸一把泪,当初听说会多媒体的比较牛掰,公司也有需求,于是乎我也积极的加入研究android多媒体的行列,记得以前刚接触的时候,最开始还是比较头大的,主要是但是很 ...

随机推荐

  1. c++泛型模板

    模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有两种形式:函 ...

  2. html菜单和课程表

    菜单: <html> <head> <meta charset="utf-8"> <title>菜单练习</title> ...

  3. linux下nginx tomcat集群

    集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器. 这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程 ...

  4. geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql

    package com.geoserver; import java.io.IOException; import java.util.ArrayList; import java.util.Hash ...

  5. 一名优秀的UI设计师应该具备哪些条件?

    想做好一个好的UI设计师除了应该具有一定的审美能力,还要了解整个产品的开发过程,因为目前国内的软件行业还不能对UI设计形成应有的重视度,所以对我们的要求就更高了,你要能作出夺人眼球的东西,还要站在用户 ...

  6. Autotest Weekly Report

    Autotest Weekly Report Reported by: 12/16/2013 What I Did Last Week Debug autotest scripts of ‘smart ...

  7. C语言中以字符串形式输出枚举变量

    C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 h ...

  8. 8.15 session 有效时间, session在数据查询中最后不用

    1.在tomcat-->conf-->conf/web.xm中的<session-config>中设置: <session-config> <session- ...

  9. PTA第一次作业和第二次作业

    PTA的第一次作业第一题: #include <stdio.h> int main (void) { int grade,i,N ,a=0,b=0,c=0,d=0,e=0; printf( ...

  10. Netty学习第二节Java IO通信

    一.Java IO通信 名词解释: BIO通信:       采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端连接,在接收到客户端请求后,为每一个客户端建立一个新的线程负 ...