你们有没有发现 前后端分离/微服务 里结果套结果的情况? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
tf2
V2EX    程序员

你们有没有发现 前后端分离/微服务 里结果套结果的情况?

  tf2 4 天前 1711 次点击

本来厂里的接口都有一个统一的 错误代码 错误信息 字段

但是有些业务返回 错误代码=0 ,错误信息=“”, 表示没出错。然后在结果里自己再套一层,定义另外一套错误代码 错误信息

问了下为啥这么做,对方说厂里对接口有监控,出错率指标有考核

我:???

好像。。。。合理?

15 条回复    2025-11-15 19:16:27 +08:00
pigspy
    1
pigspy  
   4 天前
这个是不正常的,既然已经有了统一的错误码字段,没有特殊情况就应该统一处理
shadowyue
    2
shadowyue  
   4 天前
挺傻逼的,我点名批评个大厂,某度的金融系统,亲眼看到接口响应就是这么干的,
响应里边包一层别人的响应
zhmouV2
    3
zhmouV2  
   4 天前
HTTP 还有统一的错误码呢 写业务的也有包一层啊
Suaxi
    4
Suaxi  
   4 天前
正常,也不正常,同一个公司,不同项目组都能整出来带有各自强烈风格和色彩的 ResponseRsult
Suaxi
    5
Suaxi  
   4 天前
@Suaxi 少打一个 e ResponseResult
tf2
    6
tf2  
OP
   4 天前
@pigspy 主要是这个考核,如果传参导致出错,考核的是接口提供方


@zhmouV2 你提到这个,我突然觉得这个包一层的原由是一样的。http 出错导致监控报警太多,所以把业务层和传输层的出错信息要分别开来。
jhdxr
    7
jhdxr  
   4 天前
@tf2 把业务的错误和非业务的错误分开来是合理的。但问题是业务的出错基本上都可以套用 4xx ,实在不行也可以 400 再在结果里细分。真要考核那考核 5xx 的错误也就行了。。。
tf2
    8
tf2  
OP
   4 天前
@jhdxr 单说 http 这事,细分的话不如 http 一律 200 然后 json 里细分。

去 http 监控里看业务异常问题是挺鬼畜的。。。。
pigspy
    9
pigspy  
   4 天前
我理解这种情况是公司已经定义了统一的响应结构,比如
```json
{
"code": 41101,
"error": "xxxx",
"data": null
}
```

但是为了规避统一的错误检查,又在里面包了一层,比如

```json
{
"code": 0,
"error": "ok",
"data": {
"code": "12121",
"msg": "error msg"
}
}
```

这种就是很恶心的做法
elron
    10
elron  
   4 天前
上有政策,下有对策
chendy
    11
chendy  
   4 天前
@zhmouV2
http 状态码表达能力太有限了
不如全 200 + 相应内容带自定义状态码,遇到 4xx 5xx 直接按接口报错就完事了

状态码有个好处是在 header 里,access log 之类的直接能体现,但是也可以通过把自定义状态码塞 header 里解决
seanlin5
    12
seanlin5  
   4 天前
我们外层只包含三个字段。
{
errorCode:0,
errorMsg:'',
data:null
}
ben1iu
    13
ben1iu  
   4 天前
那要是统一错误检查 同时检测处理包的那一层 再包一层呗
ZeawinL
    14
ZeawinL  
   4 天前 via iPhone
code
msg
data
mightofcode
    15
mightofcode  
   3 天前
这个理由完全合理
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5768 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 25ms UTC 02:44 PVG 10:44 LAX 18:44 JFK 21:44
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86