接口设计请教

2019-07-09 18:06:53 +08:00
 reid2017
前端 app 里有三个业务开关 true/false,三个开关对应的业务是相互独立不关联的,而且都在同一个设置页面,对应于数据库同一张表里的三个字段,那么在设计修改接口时,是三个开关各设计一个接口,or 只设计一个接口( 传参方式用 JSON request body )?

目前是各开关一个独立的接口,感觉有点冗余。。
4969 次点击
所在节点    Java
18 条回复
rain0002009
2019-07-09 18:14:37 +08:00
像极了我们的后端,获得超级管理员数量,管理员数量,和编辑数量 竟然是 3 个接口
luckylo
2019-07-09 18:37:29 +08:00
同一个业务场景,web(pc 浏览器),wap ,app 会写三套接口,你能理解?
cccssss
2019-07-09 18:54:01 +08:00
@luckylo 重点老板还觉着这种人干活出活。一直有功能开发出来,而三端复用 api 的人整天无所事事?
ffeii
2019-07-09 18:58:13 +08:00
我觉得都可以,都合理
micean
2019-07-09 19:06:44 +08:00
很正常,每个接口尽量做好一件事而不是只为了满足前端的需求
irvinghua
2019-07-09 19:40:56 +08:00
肯定是一个接口干完这个事情优啊。。而且你这表结构设计也不合理,字段应该设计成:id,switch_name,switch_status(枚举类别 true/false) ,一个开关状态对应一条记录,而不是新增一个开关,就加一个字段。如果需求频繁改,你这表结构字段频繁变动,sql 也频繁变,ORM 映射成实体类也频繁变,这不累死?
Caballarii
2019-07-09 20:13:44 +08:00
rest 的缺点就是这样,graphql 欢迎你
jiekii
2019-07-09 21:59:02 +08:00
设计个 API 这么纠结 >_>
rainbirda
2019-07-09 22:17:16 +08:00
感觉没啥毛病啊 单一职责 而且以后每个开关后台有业务的话 改一个开关不至于影响其他的
yuankui
2019-07-09 22:39:46 +08:00
现在的 web 接口,就是太灵活,一个东西有很多种解,这样才会早餐分歧。。
啥时候,能出一个编程范式,可能一个东西,就只有一种实现,那么程序时间就可以解放了。

甚至,编程机器人,也就不远了。。哈哈😄
zisway
2019-07-09 23:00:31 +08:00
每个开关一条记录,一个接口根据唯一 key 获取开关的值。
a852695
2019-07-09 23:08:06 +08:00
遇到过同样的情况,比如说表单修改这些,都是直接将整个 form 传给后端更新掉。
reid2017
2019-07-09 23:13:12 +08:00
@irvinghua 谢谢,确实如你所说可能是表设计得不太好

@a852695 是的,字符类型的修改我一般是 form/json 全部打包传参

@yuankui 有点这个意思
progart
2019-07-09 23:22:31 +08:00
既然 三个开关对应的业务是相互独立不关联的
那么 在可选择的情况下,当然是三个接口,互相独立,会更合理些,带来的就是接口维护联测工作量上升。
jackielin
2019-07-09 23:36:31 +08:00
很多情况下面 ui 是要考虑性能问题的,一次性提供一个接口能减少请求,提升性能,这种情况,要么加一个中间层做代理,要么后端就直接改成支持远程调用,比如可以通过一个接口指定要调用 a,b,c 三个 function
LeeSeoung
2019-07-10 09:59:10 +08:00
当前职责你觉得三个开关可以写在同一个接口,后面某些开关要求加上条件判断联动,你就知道为啥要拆成三个接口去写。。
alleinmeng
2019-07-13 09:35:47 +08:00
一个整形用低三位做开关变量,做与运算(位运算),判断是哪个开关开的,然后使用策略模式针对不同状态采用不同策略
hangszhang
2019-07-30 00:20:35 +08:00
这是 restful 的缺点

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

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

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

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

© 2021 V2EX