如何更好地设计RESTful API?

北慕城南 提交于 2020-02-29 05:44:02

如何更好地设计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 分页

未完待续

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!