一、引子
我们在设计接口时无外乎以下两种:
写
:如创建、修改、删除,这里可能会包含复杂的校验逻辑,执行的结果可能是出错、部分出错、有部分警告。读
:后端只是纯粹地根据用户提供的条件检索指定的数据,操作是幂等的,要么能查出来,要么查不出来,不会对已存在的数据造成影响。
那么根据这样的分类,我们就可以设计出更具针对性的响应体。
二、读操作
对于读操作,因为每个读操作都是针对不同的资源,所以直接返回对应的实体、列表或dto就可以了。为了系统的鲁棒性,在系统出现异常时,也要返回带异常信息的响应体,我们大胆的使用和正常响应不同的响应体就可以了(和写操作一样的响应体),前端处理起来也很简单。
三、写操作
对于写操作,我们只需要返回
执行的结果
,成功还是失败警示信息
,成功和失败都会有错误信息
,失败才会有
所以我们每一个非幂等的接口返回的结果都应该是这样的:(以登录接口举个例子)
{
success: true