后端对于restful接口返回状态码的理解

今天在上班路上突然理解了一件长久以来困扰我的事情。

做前端这几年,遇到做后端的接口,全都声称是restful接口,但使用http状态码作为判定条件的一个都没有,统统返回200然后在消息体里自定义状态码。

原因大概因为jquery或axios等接口请求库,默认配置下,接口若返回非200响应,里面的消息体就拿不到啦。在大部分人的前端知识体系中,非200意味着抛出错误,消息体什么的当然拿不到,所以当应用出错时希望拿到错误提示等信息,必须还是返回200的状态。

其实,非200的状态返回的消息,前端一样拿得到,只是需要一些额外配置一下。但后端人员对于前端jquery ajax请求应用的示例作为标准,或者理所当然认为前端人员的水平也只能获取到200返回的消息。于是就出现了各种各样的自定义消息体…

推荐一下fetch,返回的是Response对象,只要是服务端相应了,里面都可以拿到各种接口返回数据,只有在网络出问题比如请求不可达的情况下会抛出错误。

最后为自己的库做个广告 fxios

此条目发表在 ecmascript 分类目录。将固定链接加入收藏夹。