关于@Controller方法中return返回值成功,前端报404问题的正式解决

前言

今天用 postman 测试接口发现出现了重复的地址名称,比如原本路径应该是 /wxMpService/details 的,变成了这样 /wxMpService/wxMpService/details,多了个 wxMpService,我想不通是什么问题导致,因为后台有返回了数据,但是到前端就报 404 的问题。

在这里插入图片描述
在这里插入图片描述

后来经过测试发现了问题,就是如果我定义 @Controller 注解就会发生这个问题,如果我定义 @RestController 就会访问正常,为什么会出现这种情况呢。

原因是由于 @Controller 忘记写返回状态码 @Responsebody ,Spring 对返回值映射时找不到对应的视图,所以返回404。

所以,当使用 @Controller 要在每个方法上面加上 @ResponseBody,负责将数据以 JSON 形式返回出去,也可以直接在类的顶部将 @Controller 换成 @RestController,@RestController 注解,相当于@Controller 和 @ResponseBody 两个注解的结合,返回 JSON 数据不需要在方法前面加@ResponseBody 注解了,但使用 @RestController 这个注解,就不能返回 html 和 jsp 页面,因为视图解析器无法解析 jsp、html 页面

这里我查询了一下 @ResponseBody 注解的说明,发现它的作用是将代码 return 的值作为 HTTP 请求的内容返回客户端,也就是我们可以在前端直接当成 JSON 来接受后端发送的数据。所以是因为我之前没写这个注解,所以,HTTP 请求的内容默认将是一个页面,而有了这个注解呢,就可以直接把函数返回值作为 HTTP 请求的内容。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值