欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RESTful 架构

程序员文章站 2024-03-25 19:21:46
...

RESTful测试地址

JSONPlaceholder

http://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to

HTTP动词

GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

例子:

GET /tickets # 获取ticket列表
GET /tickets/12 # 查看某个具体的ticket
POST /tickets # 新建一个ticket
PUT /tickets/12 # 更新ticket 12.
DELETE /tickets/12 #删除ticekt 12

资源

单资源 (singular-resourceX )

url样例:order/  (order即指那个单独的资源X)
GET - 返回一个新的order
POST- 创建一个新的order,从post请求携带的内容获取值。

单资源带id (singular-resourceX/{id} )

URL样例:order/1 ( order即指那个单独的资源X )
GET - 返回id是1的order
DELETE - 删除id是1的order
PUT - 更新id是1的order,order的值从请求的内容体中获取。

复数资源 (plural-resourceX/)

URL样例:orders/
GET - 返回所有orders

复数资源查找(plural-resourceX/search)

URL样例:orders/search?name=123
GET - 返回所有满足查询条件的order资源。(实例查询,无关联) - order名字等于123的。

复数资源查找(plural-resourceX/searchByXXX)

URL样例:orders/searchByItems?name=ipad
GET - 将返回所有满足自定义查询的orders - 获取所有与items名字是ipad相关联的orders。

单数资源(singular-resourceX/{id}/pluralY)

URL样例:order/1/items/ (这里order即为资源X,items是复数资源Y)
GET - 将返回所有与order id 是1关联的items。
 
singular-resourceX/{id}/singular-resourceY/
URL样例:order/1/item/
GET - 返回一个瞬时的新的与order id是1关联的item实例。
POST - 创建一个与order id 是1关联的item实例。Item的值从post请求体中获取。
 
singular-resourceX/{id}/singular-resourceY/{id}/singular-resourceZ/
URL样例:order/1/item/2/package/
GET - 返回一个瞬时的新的与item2和order1关联的package实例。
POST - 创建一个新的与item 2和order1关联的package实例,package的值从post请求体中获得。

状态码

200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

参考

RESTful API 设计最佳实践    http://blog.jobbole.com/41233/
RESTful 接口规范    http://www.coderli.com/translate-restful-standard-resolved/
RESTful HTTP的实践	http://www.infoq.com/cn/articles/designing-restful-http-apps-roth
RESTful API 设计指南	http://www.ruanyifeng.com/blog/2014/05/restful_api.html