如何更好地设计RESTful API?
目前对于大多数项目来说, 前后端分离,接口调用, RESTful API使用越来越流行。但是如何设计更好,更容易让人理解的API还是需要下一番功夫的。
下面我将介绍如果更好地设计RESTful API。
一,使用名词而非动词
为了方便理解, 我们应该为所有的API列表使用名词。 例如
订单 | GET | POST | PUT | DELETE |
---|---|---|---|---|
/cars | 获取所有的汽车列表 | 新建一辆汽车 | 批量修改 | 删除所有 |
/cars/112 | 获取特定的汽车 | NOT ALLOWED(405) | 修改特定的汽车 | 删除特定的汽车 |
不用使用如下:
/getAllCars
/createNewCar
/deleteAllRedCars
二,GET
方法不应该修改任何的状态
如果需要修改相关数据项的状态, 用 PUT
, POST
或者DELETE
而非GET
例如: 不要使用
GET /users/113?activate or
GET /users/113/activate
三, 使用复数名词
不要把单数和复数名字搞混淆了, 一般来讲, 所有的资源都使用复数, 例如:
/cars 而非 /car
/users 而非 /user
/products 而非 /product
/settings 而非 /setting
四,使用子资源
如果两个方法中间有必然的关系, 这个时候应该使用子资源的方式, 例如:
GET /cars/711/drivers/ 找到所有开711这个车的司机
GET /cars/711/drivers/4 找到车711,id为4的司机
五,设置HTTP headers
服务端和客服端都应该指定HTTP header, 像Content-Type
, Accept
六,为客服端提供过滤,排序,分页
6.1 过滤(搜索🔍)
当我们需要过滤(搜索)的时候应该放在URL
参数上, 而不是放在POST
方法的data
内容里面
GET /cars?color=red 返回车身颜色为红色的所有车辆
6.2 排序
6.3 分页
未完待续
来源:oschina
链接:https://my.oschina.net/u/2986558/blog/787785