restful如何区分前端请求错误和用户操作错误???

http状态码 4XX 表示客户端错误 如果一个请求出错,可能是前端程序错误,发送了错误的请求;也可能是用户执行了错误的操作,发送了错误的数据。如果是前端的程序,运维监控系统应该记录并报警,如果是后者,则无此必要 但如何在restful响应中区分这两种错误??

已邀请:

chenqinghe

赞同来自: nove001

我设计api接口返回的数据格式包括固定的三部分:

{
    "code":0,
    "msg":"ok",
    "data":{
        "name":"tom"
    }
}

code是错误码,msg是错误信息,data是真正的数据部分。其中code表示业务逻辑中的错误码。而http状态码用来表示网络请求的状态。比如说发送一个delete请求删除一篇文章,而这篇文章不存在,那返回值可能是:

{
    "code":1001,
    "msg":"article not found",
    "data":null
}

但是http的状态码可以是200。这样就可以把业务逻辑的错误和网络请求的错误区分开来。

这里还有一个点就是返回的http的状态码,虽然说在这种情况下,任何请求的http状态码都可以是200,但是却不利于监控告警,因为200一般不会引起重视。如果有个请求的参数是个int型,但是前端传了个string,那么http状态码返回400可能会比返回200更好一点。

h12 - https://h12.io/about

赞同来自:

https://golang.org/pkg/net/http/ 这些4xx状态不够用吗?

fwhezfwhez

赞同来自:

用户错误

status 400
{
    "message": "为什么错了"
}

系统错误

status 500
{    
    "message":"inner server error",
    "debug_message":"堆栈"
}

要回复问题请先登录注册