了解下现在接口返回都是什么形式, 要不要提示文本?

2021-07-26 10:39:02 +08:00
 onikage

http, json. 以登录接口为例, 两种方案:

  1. 返回{"code":0} 代表成功, {"code":1} 代表用户名密码不匹配. 前端页面自己根据 code 显示不同提示文案.
  2. 返回{"code":0,"msg":"登录成功"}, {"code":1, "msg":"用户名密码不匹配"}, 页面上直接显示 msg 属性的文本. 我个人认为第二种非常啰嗦, 一个 code 足以说明问题, 但是好像不少人都习惯第二种.
5833 次点击
所在节点    编程
77 条回复
Bazingal
2021-07-26 10:42:25 +08:00
第二种,前端不用写一堆枚举
coolcoffee
2021-07-26 10:46:39 +08:00
同样是第二种,你封装好以后,自动将 code 对应的提示语带出来就好了。 这样能方便调试以及前端提示,同时也能根据特殊 code 单独处理逻辑。

不然后端自己 postman 调试的时候,看到 code 还要有个查询或者去读记忆过程。
nekoneko
2021-07-26 10:46:54 +08:00
我现在要根据用户的预言返回 中文,拉丁文,英语,日语,繁体中文,阿拉伯语,法语,德语,韩文,俄语,西班牙语,葡萄牙语,印地语.你是要前端来搞嘛?今天我又要加一种语言呢?
misaka19000
2021-07-26 10:50:11 +08:00
第二种,方便排查问题
sunjiayao
2021-07-26 10:51:55 +08:00
接口响应状态还是第二种好。
一个 code 对应不同 msg 时,前端只需要阻断当前流程并 toast 提示即可。
kop1989
2021-07-26 10:52:55 +08:00
如果是第一种的话,你怎么保证前端的 code 与后端的 code 语义一致呢?
adnoh
2021-07-26 10:53:49 +08:00
我现在接口都用这种形式的了{"ok":true,"msg":"登录成功","data":{}}
aogu555
2021-07-26 10:55:38 +08:00
第二种,如果第一种的话如果需要增加 code 类型,那么需要通知前端去修改 msg 映射,而且也要单独维护一份接口文档,但是第二种后端自己改就行了,减少不必要的沟通成本。
onikage
2021-07-26 10:57:53 +08:00
@nekoneko 增加一种语言难道前端不用改么? 第一种的话在增加语言时只需要前端发布新版本就好, 第二种新增语言前后端都得有工作量.
onikage
2021-07-26 10:59:50 +08:00
@Bazingal 你是前端吗? 这部分工作量无论前后端都得做. 我作为后端来说, 这部分想图省事扔到前端做.
onikage
2021-07-26 11:00:20 +08:00
@sunjiayao 一个 code 怎么对应不同 msg?
onikage
2021-07-26 11:01:26 +08:00
@aogu555 这个场景倒是很有道理.
anzu
2021-07-26 11:04:41 +08:00
当然是第一种,方便以后做 i18n,不用再通知后端用户切换了语言。至于前后端 code 一致性,如果懒得写文档,后端可以另写一个内部用的接口枚举所有 code 映射,前端请求一下即可。
sunjiayao
2021-07-26 11:04:53 +08:00
@onikage 比如说定义 code 1 为错误 code 。msg 有可能是 用户名密码错误 验证码错误 验证码发送过于频繁 等等
h1104350235
2021-07-26 11:15:58 +08:00
第二种好
onikage
2021-07-26 11:17:53 +08:00
@anzu 对, 我也是这么想的. 但是目前公司内支持第二种的人比较多.
onikage
2021-07-26 11:18:13 +08:00
@h1104350235 好在哪里?
onikage
2021-07-26 11:19:02 +08:00
@sunjiayao 这样其实可以通过定义多个错误代码解决.
onikage
2021-07-26 11:19:23 +08:00
@kop1989 接口文档啊.
sunjiayao
2021-07-26 11:25:06 +08:00
@onikage 其实一般来说,不需要执行特殊流程的异常返回是不需要单独定义 code 的。我的习惯是这样

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

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

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

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

© 2021 V2EX