RESTful是目前最流行的API设计规范,用于Web数据接口的设计。
一句话描述RESTful就是:客户端发送请求时,用URI定位资源,用HTTP方法描述动作。
也就是“动词+宾语”的结构。
动词通常对应四种HTTP方法,对应增删改查操作
GET: 获取数据
POST:发送数据
PUT: 更新数据
DELETE:删除数据
RESTful是一种规范,除了上面最直观的要求以外,好的RESTful设计最好应该满足下面这些要求:
1.URI的要求
- URI应该是名词,不能是动词。比如,/articles这个URI就是正确的,而/getArticles就是错误的
- URI单数还是复数?这里没有统一的规定,但是常见的操作是读取一个集合,为了统一起见,建议都用复数URI
- 避免多级URL:常见的情况是,资源需要分多级,因此容易写出多级的URL。这种URL不利于扩展,语义也不确定。更好的做法是,除了第一级,其他级别都用查询字符串表达。
例如:下面这两个URL,下面的URL更好。
GET /authors/12/categories/2
GET /authors/12?categories=2
2.状态码
1xx
:相关信息2xx
:操作成功3xx
:重定向4xx
:客户端错误5xx
:服务器错误
3.服务器回应
1.返回JSON,不要返回纯文本
2.发生错误的时候不要返回200:有一种不恰当的做法是,即使发生错误,也返回200状态码,把错误信息放在数据体里。
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "failure",
"data": {
"error": "Expected at least two items in list."
}
}