RESTful设计要素
资源路径
在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能有名词。一般来说API中的名词应该使用复数。
HTTP动词
对于资源的操作(CURD),由HTTP动词表示。
》GET:从服务器取出资源
》POST: 在服务器新建一个资源
》PUT : 在服务器更新资源(客户端提供改变后的完整资源)
》PATCH:在服务器更新资源(客户端提供改变的属性)
》DELETE: 在服务器删除资源
过滤信息
如果记录数量很多,服务器不可能都将他们返回给用户。API应该提供参数,过滤返回结果。
eg:
?offset=10: 指定返回记录的开始位置
状态码
使用标准的HTTP状态码
》200 OK 服务器成功返回用户请求的数据,该操作是幂等的
》201 CREATED 新建或修改数据成功
》204 NO CONTENT 删除数据成功
》400 BAD REQUEST 用户发出的请求有错误
》401 Unauthorized表示用户没有认证,无法进行当前操作
》403 Forbidden 表示用户访问是被禁止的
》422 Unprocesable Entity 当创建一个对象时,发生一个验证错误
》500 INTERNAL SERVER ERROR服务器发生错误,用户将无法判断发出的请求是否成功。
错误处理
如果状态码是4XX或者5XX,就应该向用户返回出错信息,一般来说,返回的信息中将error作为键名,出错信息作为键值即可:
{
“error”: "参数错误"
}
返回结果
针对不同操作,服务器向用户返回的结果应该符合一下规范:
》GET/collections:返回资源对象的列表(数组)
》GET/collections/identity:返回单个资源对象,如果该资源不存在,则返回404状态码
》POST/collections:返回新生成的资源对象
》PUT/collections/identity:返回完整的资源对象
》PATCH/collections/identity: 返回被修改的属性
》DELETE/collections/identity:返回204状态码 和 一个空的响应体