美文网首页
浏览器状态码与后端返回码的说明

浏览器状态码与后端返回码的说明

作者: 我背井离乡了好多年 | 来源:发表于2021-05-19 17:30 被阅读0次

    一.后端服务挂掉,前端跑请求
    1拦截器走reject


    image.png

    2接口会走.catch


    image.png
    3浏览器的状态响应码为500
    image.png

    二.后端服务正常运行,但是不存在这个接口,前端跑请求
    1拦截器走reject


    image.png

    2接口会走.catch


    image.png
    3浏览器的状态响应码为404
    image.png

    三.一切正常,但是后端没给响应
    1拦截器走reject


    image.png

    2接口会走.catch


    image.png
    3.前端这边会显示超时

    四.总结只要后端给了响应,就不会由浏览器给那些状态码.那么前端的请求也不会走.catch(后端自定义状态码除外)

    五.后端服务器正常开启,但是数据库服务挂掉
    1前端代码


    image.png

    2.后端通过catch捕捉错误后会正常返回


    image.png
    3.因为后端有返回,所以前端走.then而不会走.catch。除非后端自定义浏览器系统响应码。

    六.要分清后端给的响应码还是浏览器给的响应码

    七.后端也可以自定义响应码
    1nodejs作为后端怎么自定义呢


    image.png

    2.前端这边,虽然后端有正常返回,但是因为后端自定义了浏览器返回码,所以前端这边依然走.catch


    image.png
    3.通过代码可以看到后端自定义的是600,浏览器这边实际系统响应码也是600
    image.png

    七、可以分析出,尽管后端正常返回,但是如果自定义的状态码不对的话,前端也会走.catch。
    因为后端有catch,一般来说都能正常返回.所以后端和前端一定要先协商好状态码。

    八、200-300的状态码都可以走.then。那么我们可以采用以下两种方式进行返回
    第一种:后端以.catch捕捉错误,不管后端写入数据是否成功,始终以200的状态码正常返回给前端。这样一来,前端就可以这样判断。分两类,第一类前端这边ajax请求走.catch,那么必然是后端服务挂掉或者网络问题等;第二类,前端走了.then,这样也不一样就是成功(可能后端.catch捕捉了错误正常返回的),那么在.then中需要判断.我写了一个例子如下:


    image.png

    第二种:后端只能成功获取到了数据才能以200的状态码返回;;;;后端只要.catch了(若数据库查询错误等)都不以200返回了,
    返回的状态码一定要让前端走.catch。
    这样一来前端这边只有两种情况,第一种.then就代表绝对成功,第二种.catch不成功(要么网络错误,那么后端查询错误)。

    相关文章

      网友评论

          本文标题:浏览器状态码与后端返回码的说明

          本文链接:https://www.haomeiwen.com/subject/phipjltx.html