名词
资源(Resource):任何东西都是一种资源,例如,一篇博客文章
表示(Representation):资源的一种表现形式,例如,JSON、XML
URL:每个资源都应该有一个对应的URL
URI:URL是URI的一种,URL都有对应的资源,而URI不一定,它强调的是一种资源标识
使用协议语义
GET:获得一个资源的一种表示
原则上所有的GET操作都是安全操作,意思是GET不会更改数据。但也有例外,对于一些无关紧要的操作,也可以用GET,例如,更新一个counter
返回码:
200 OK
POST:提供一个表示,创建一个资源
返回码:
201 Created:创建成功
202 Accepted:服务器已经接受了请求,但还没有创建
Overloaded POST
例如,在一个HTML表单里面,更改博文的操作是POST,因为HTML不允许表单使用PUT。类似的场景中,POST包含了多种含义,被称为Overloaded POST。已经无法在协议语义里面区分了,需要在程序语义里面区分。 推荐不要使用Overloaded POST
PUT:用一个完整的表示,替换一个资源
返回码:
200 OK:更新成功
DELETE:删除一个资源
返回码:
200 OK
HEAD:获取表示的头信息
OPTIONS:探测URL支持的操作
安全性和幂等性
安全性:操作不修改资源,GET、HEAD和OPTIONS是安全的。*是否GET就不能修改数据?不一定,对于一些细小的操作,GET也可以修改数据,例如,访问一个URL增加counter的值
幂等性:除了安全的操作以外,DELETE、PUT、PATCH也应该是幂等的