作者回复: 你们的监控如果一定要区分这两种情况,那只能从业务code上区分了。 如果感觉从业务code区分比较麻烦,那可以将yaml data couldnt be encode这种错误,再映射为一个HTTP Status Code,比如:512。 这种复杂度,是不可避免的,因为监控是一定要感知到差异的,这些差异要么来自于业务code,要么来自于http status code
作者回复: 新浪微博的缓存系统设计的也是很NX
作者回复: 确保ErrCode实现了errors.Coder 接口,如果没实现,在编译期间就能发现错误。
作者回复: 感觉不太适合,原因如下: 1. HTTP的状态码和业务的状态码其实不是一回事情,强行放一起,会有点乱。 2. 如果使用HTTP状态码,就意味着,错误码是有限的,而且还比较少。不利于系统的演进,因为随着系统规模的扩大,错误码很容易突破HTTP闲置状态码的个数。 3. HTTP状态码不能包含更多的信息
编辑回复: 收到反馈,我们和老师确认下 老师的回复:“没写错哈。虽然后面2个HTTP status code返回的是一样,但是response body中返回的错误信息丰富度是不一样的。”
作者回复: 这个还没有实现,你可以网上搜下实现方法,并尝试实现。带着问题去学习,这种学习效果更好
作者回复: 666
作者回复: 加了哈,已入群
作者回复: 如果真的需要很多服务,那错误码可以再多一位。 规范是人定的,具体需要看是否匹配业务,规范如果不匹配业务,需要修改之前的规范,并形成新的规范,都是可以的。
作者回复: 对内对外是可以不一样的。返回的错误中也可能有敏感信息