前后端 api 接口 url 格式问题讨论

2023-09-08 11:48:39 +08:00
 pandazhong123

公司的前后端 api 接口统一用 post,对于添加删除用户,是用 /user/add /user/delete 比较好,还是用 /add/user /delete/user 比较好?

4534 次点击
所在节点    程序员
82 条回复
radiocontroller
2023-09-08 13:15:30 +08:00
GET /users 用户列表
radiocontroller
2023-09-08 13:15:40 +08:00
radiocontroller
2023-09-08 13:16:56 +08:00
restful
GET /users 用户列表
POST /users 新增用户
GET /users/{id} 用户详情
PATCH /users/{id} 更新用户
DELETE /users/{id} 删除用户
csrocks
2023-09-08 13:17:42 +08:00
Chad0000
2023-09-08 13:18:32 +08:00
两种风格都可:

/user/add
/user/delete

post /user
delete /user/{userId}
clf
2023-09-08 13:21:13 +08:00
@radiocontroller #23 RESTFUL 除非是自己的 SSAS 系统,那随便用,交付给客户的还是用 GET 和 POST 。避免遇到客户的安全策略禁了一堆请求方法。

----

/user/add /user/delete 肯定会更好,还有一种是 user/add_user user/delete_user
gesse
2023-09-08 13:42:45 +08:00
推荐 easydoc 的启蒙系列文章
https://easydoc.net/a/api-design/
Pastsong
2023-09-08 13:46:03 +08:00
/user:add

/user/add 会和 /user/{userId} 或者 /user/{userName} 冲突,万一有用户叫 add 呢
theqiang
2023-09-08 13:46:20 +08:00
@nothingistrue #15 人家说了用 POST.....
hidemyself
2023-09-08 13:47:06 +08:00
上面有 RESTful 风格的 api
我想问下,
根据用户 id 删除用户是 DELETE user/{id}
如果我有个接口是根据用户手机号删除用户,应该怎么命名
worldqiuzhi
2023-09-08 13:49:35 +08:00
上次 v 站刚有一个用非 POST 方法过等保被拒的 GET /users 用户列表
POST /users 新增用户
GET /users/{id} 用户详情
PATCH /users/{id} 更新用户
DELETE /users/{id} 删除用户
lanlanye
2023-09-08 13:56:36 +08:00
全 POST 的话我也有个邪道做法:

POST '{prefix}/users/{id}' \
--data-raw '{"method": "DELETE", "data": null}'
PiersSoCool
2023-09-08 14:15:25 +08:00
都可以

风格差不多一致就行

就怕不一致的
coderxy
2023-09-08 14:16:59 +08:00
有的后端是微服务, 按照 /user /post 这样的前缀去分发服务的。 这种你就只能按照后端规则来了。
estk
2023-09-08 14:29:20 +08:00
tRPC 让前后端一起闭嘴
Crapulence
2023-09-08 14:32:58 +08:00
第一种 可以一眼看到针对 user 下的资源进行操作
yugali
2023-09-08 14:37:19 +08:00
@hidemyself 根据手机号找到用户,然后 DELETE user/{id}
johnnyNg
2023-09-08 14:41:33 +08:00
post,然后 data 里面包含 path 、method
arfaWong
2023-09-08 14:42:09 +08:00
@hidemyself #30 问的 chatgpt 😂

根据 RESTful 风格的 API 设计原则,您可以将根据用户手机号删除用户的接口进行命名。以下是一个可能的命名方案:

DELETE /user/phone/{phoneNumber}

在上述命名中,您可以使用"user"作为资源的基本路径,然后使用"phone"来指示后续路径是基于用户手机号进行操作。最后,使用"{phoneNumber}"作为占位符表示要删除的具体手机号。
cdwyd
2023-09-08 14:42:35 +08:00
第一种更舒服些,把要操作的对象统一放到了最前面,写文档的时候看起来也更好看一点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/971993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX