zoukankan      html  css  js  c++  java
  • Http 错误:"status":404,"error":"Not Found","message":"No message available”,”path":""

    在对代码进行调试的时候,前端页面报了一个错:

    1 {"timestamp":"2019-09-02T02:55:45.555+0000","status":404,"error":"Not Found","message":"No message available”,”path":"/order/createorder"}

      这个 bug 出现的原因是因为犯了一个更加低级的错误。。。但是我觉得解决问题的分析思路还是可以借鉴的,这里总结一下。

      前端页面显示错误信息,但是在我的后端程序中没有一个报错信息,甚至没有一个异常抛出,而且有关数据成功写入数据库,订单信息写入数据库,商品库存减少,销量增加,一切数据在后端逻辑来说毫无问题,但是前端为什么报错呢?于是我把问题固定在前端的 html 文件上了,回去排查前端代码,打开 chrome 的检查,刷新页面,添加断点,重新刷新,查看变量值:

      发现状态 status 确实是 success,变量数据都完全正确,怎么回事,经过一上午的排查,前端貌似没有错。再仔细分析下前端页面报的错,404,not found,”path”:”/order/createorder”,难不成后端的控制层代码有错,导致前端页面响应结果没有找到正确的路径。回去检查一下,果不其然,在控制层方法的注解上面漏了 @ResponseBody 注解。

    @ResponseBody

    先来看看为什么要添加这个注解

      The course documentation states that this annotation serves the function to: ensure that the result will be written to the HTTP response by an HTTP Message Converter (instead of an MVC View).

      The annotation means is that the returned value of the method will constitute the body of the HTTP response.

      The returned value of the method will constitute the body of the HTTP response.

      说的都是一个意思,就是 @ResponseBody 用于对方法进行注释, 表示该方法的返回的结果将直接写入 HTTP 响应正文(Http Response Body)中。我之前控制层代码里有返回值,类型为 CommonReturnType 的通用返回值类型,我把返回值去掉后,方法改为 void,无任何返回值, 虽然在前端的调试中,各种数据依然正常,但是前端页面获取不到控制层方法的返回值,在 response body 中无内容,导致点击前端页面的按钮不会有任何现象发生,虽然此时后端逻辑正确无误,数据库入库操作都实现了。所以我这里必须给该方法一个返回值,且要通过注解形式将返回值加到 Http response body 中。 如果没有这个注解,就会抛出上面的 responseText 异常信息。

    Ref1

    Ref2 

  • 相关阅读:
    vue 中的registerServiceWorker
    转载:阿里手淘可伸缩布局方案amfe-flexible解决vue移动端适配问题
    转载:vue-clipboard2(vue剪切板功能)
    vue中节流函数实现搜索数据
    vue项目怎么阻止很快速的点击两次然后提交的两次请求
    IE10中show-overflow-tooltip不展示
    Oracle锁表查询和解锁方法
    自动重启sqlserver服务
    利用jQuery中live为动态生成Dom添加datepicker效果
    IIS7 https 发生413错误 未显示页面,因为请求实体过大
  • 原文地址:https://www.cnblogs.com/dogeLife/p/11447394.html
Copyright © 2011-2022 走看看