1.用于分离外网错误还是内网错误
2.还可以区别是系统错误还是业务逻辑错误
如果一律返回200,却收到了非200的结果,就说明外网出问题了,可能是运营商缓存服务器的问题,可能是DNS污染等等
而内网错误则在200返回的内容里用code来表示,就可以很好的定位问题
你总不能张三验证码输错几次,运维直接收报警吧。。。
很多人开发的时候因为都在内网测试,没有遭遇过外网错误,所以就会觉得这种做法很多余
但在实际使用中,尤其是服务器和用户跨国甚至跨洲的情况下,整个外网传输过程并不稳定,可能会出现各种异常,这种情况下这种一律返回200来区分外网错误和内网错误的做法就显得非常有价值了
举个例子吧,众所周知vercel免费版不大稳定,有时候会503。如果我把自己内部代码错误也http返回503,那么client侧就无法辨别到底是我的代码出问题了还是vercel炸了。如果我用http返回200,code503的办法,client得到了http503那就可以提示用户是vercel炸了而不是我代码出错了,code503才是vercel没炸而我代码炸了。这种思路在白嫖很多免费而不稳定的云服务时非常有用,尤其是如果同时部署了vercer,glitch,heroku等多个平台,可以通过http code判断平台是否爆炸而自动冗余切换其他平台继续服务,对于吾等没钱买pro套餐的用户来说非常好使