首页 新闻 会员 周边 捐助

CRUD接口怎么写

0
悬赏园豆:20 [已解决问题] 解决于 2023-07-28 12:47

CRUD接口 要怎么写?有什么规范呢?

不同公司的标准 是由前后端商量决定的,因此有不同规范?
数据 入参、返回值 规范 大家觉得怎么合理?
接口性能,听说过 200毫秒 的最大响应时间。


下面的 删除接口 签名:
@DeleteMapping(value = "deleteById")
Boolean deleteById(@RequestParam String id);

疑问:
1、数据库 有记录,删除成功,数据不存在了,返回 true;
2、数据库 有记录,删除失败,数据还存在,返回 false;
3、数据库 没有记录,也调用了数据库底层的删除,此时返回 什么?——mybatis-plus 返回false。
此时的效果 其实和 删除成功相同,不应该返回 true 吗?


添加接口 疑问:
1、添加成功,是返回 主键(id、uuid),还是返回 true 呢?
2、添加失败,返回 null 还是 false,以及 失败的原因?


更新接口(updateById 为例) 疑问:
字段:
private String msg;
1、入参的 msg = null,不更新数据库记录;
2、入参的 msg = "" (空字符串),此时,是否更新数据库记录呢?
原为 null,更新为 "";
原有值,更新为 ""——相当于 清空数据;
3、入参的 msg = " ",此时,保存为 "",还是 入参这么多的空格呢?


查询接口:分页查询 疑问:
1、默认一般 10条每页;
2、那么,最大允许 返回 多少条呢?500条吗?
返回数据太多,感觉没有多大用处啊!
好像ElasticSearch 对 返回数据总数 都是有 限制的。
还得 考虑 前后端的性能吧,,一次给前端返回 10万条,估计也没有多大意义。


更多 导入、导出 接口 下次问了

快乐的欧阳天美1114的主页 快乐的欧阳天美1114 | 老鸟四级 | 园豆:4008
提问于:2023-07-26 18:07
< >
分享
最佳答案
0

设计CRUD (Create, Read, Update, Delete) 接口时,确实有一些常见的规范和最佳实践。以下是一些建议:

RESTful API设计: 遵循RESTful API设计风格,使用HTTP方法(GET、POST、PUT、DELETE)来表示不同的操作。例如:使用POST方法创建资源,使用GET方法读取资源,使用PUT方法更新资源,使用DELETE方法删除资源。

统一URL命名规范: 使用有意义的URL,代表资源的名称和ID。例如:对于用户资源,可以使用/users表示获取用户列表,/users/{id}表示获取特定用户的详细信息。

数据入参与返回值: 确定数据入参的格式,一般可以使用JSON格式进行数据传输。对于返回值,可以使用HTTP状态码表示操作结果(如200表示成功,404表示资源不存在,400表示错误请求等),同时可以将详细的操作结果信息包含在JSON响应体中。

删除接口: 在删除操作中,一般推荐如果数据存在并且删除成功,返回HTTP状态码200,操作结果放在响应体中;如果数据不存在,返回HTTP状态码404。不建议在RESTful API中使用布尔类型来表示删除成功与否。

添加接口: 对于添加操作,可以在成功创建资源时,返回新资源的URL或ID。如果添加失败,可以返回适当的错误信息,使用HTTP状态码400或其他适当的错误码。

更新接口: 在更新操作中,可以使用HTTP状态码200表示成功,返回更新后的资源信息;如果更新的资源不存在,可以返回HTTP状态码404。类似删除操作,不建议使用布尔类型来表示更新成功与否。

字段更新: 对于字段更新,如果字段值为null,一般情况下表示不更新该字段;如果字段值为""(空字符串),视具体情况而定,有些系统会将其视为合法更新,有些可能会将其视为清空数据。

分页查询: 对于分页查询,一般需要在接口中提供分页参数,如页码和每页条目数。返回结果应该包含分页信息,如总页数、总条目数等。最大允许返回多少条数据可以根据具体情况设定,一般推荐不返回过多的数据,可以在接口中提供查询参数来限制返回结果的大小。

异常处理: 考虑接口中可能发生的异常情况,并提供适当的异常处理机制,例如使用全局异常处理器对异常进行统一处理,返回友好的错误信息。

安全性: 为了保障数据安全,对于敏感操作(如删除)或修改操作,可能需要进行用户认证和授权,确保只有授权用户才能进行操作。

需要注意的是,虽然有一些常见的规范和最佳实践,但具体的规范可能因公司、团队以及项目的不同而异。重要的是与前端、后端团队共同商讨,制定适合项目的规范,确保团队协作高效和代码的可维护性。

收获园豆:15
Technologyforgood | 大侠五级 |园豆:7688 | 2023-07-26 20:25

谢谢,,回头细看。

CRUD 中的 R 还有种说法是 Retrieve。
“CRUD是指在做计算处理时的增加 (Create)、读取查询 (Retrieve)、更新 (Update)和删除 (Delete)几个单词的首字母简写。”

快乐的欧阳天美1114 | 园豆:4008 (老鸟四级) | 2023-07-27 08:45
其他回答(1)
0

CRUD 我基本上是R用GET,其它都是POST。。。

收获园豆:5
快乐的langYa | 园豆:280 (菜鸟二级) | 2023-07-27 12:09

其实,前端支持很多,尤其是现代化前端,,不要担心TA们对接不了

支持(0) 反对(0) 快乐的欧阳天美1114 | 园豆:4008 (老鸟四级) | 2023-07-27 19:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册