使用postman测试后端接口时功能正常json响应数据不显示且报错404

本文介绍了解决使用Postman测试接口时出现404错误的方法。指出在Controller层仅使用@Controller注解会导致json数据无法正常展示的问题,并提出解决方案:添加@ResponseBody注解或将控制器声明为@RestController。

今天写后端接口时,代码写的没问题,但是用postman测试接口功能时,一直报错404,经过检查,Controller层的代码的注解只有@Controller,这样来响应的json数据是不会展示的。
可以再加上@ResponseBody,其作用是使得被标记的视图方法可以将返回的Java象转化为Json对象,将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
还可以直接用@RestController注解,相当于@Controller和@ResponseBody这两个注解的组合。

在前后端交互过程中,如果前端提交数据后端出现 401 授权错误,通常意味着请求缺少有效的身份验证凭据,而数据格式接口路径的问题。以下是对此类问题的详细分析与解决思路: ### 401 错误的常见原因 1. **请求头中缺少认证信息** 后端通常要求请求携带 Token(如 JWT、OAuth Token)或 Cookie 来验证用户身份。如果请求头中没有设置 `Authorization` 字段或携带有效 Cookie,服务器将拒绝请求并返回 401 错误。 检查前端请求是否在 headers 中正确添加了身份验证信息,例如: ```javascript request.post('/device_manage/sync', { deviceNumber: this.accessTableDate[key]['deviceNumber'], }, { headers: { 'Authorization': 'Bearer your_token_here' } }).then(res => { // 处理响应 }); ``` [^2] 2. **Token 过期或无效** 即使请求携带了 Token,如果该 Token 已过期或被服务器标记为无效,也会导致 401 错误。 前端应具备 Token 刷新机制,并在检测到 401 错误尝试重新获取 Token 或引导用户重新登录。 3. **跨域请求携带凭证** 如果前后端部署在同域名下,后端接口设置了 CORS(跨域资源共享)策略,要求携带凭证(如 Cookie 或 Token),但前端设置 `withCredentials: true`,也可能导致 401 错误。 示例设置如下: ```javascript request.post('/device_manage/sync', { deviceNumber: this.accessTableDate[key]['deviceNumber'], }, { headers: { 'Authorization': 'Bearer your_token_here' }, withCredentials: true }).then(res => { // 处理响应 }); ``` [^2] 4. **后端认证机制配置问题** 后端可能配置了某些路径需要认证,而前端意识到该接口属于受保护资源。 检查后端路由是否配置了权限控制(如 Spring Security、Shiro、JWT 验证中间件等),并确认当前请求是否在白名单之外。 5. **CSRF 保护机制触发** 某些后端框架(如 Django、Spring Boot)默认启用了 CSRF 保护机制,要求请求携带特定 Token。如果前端请求头中添加 `XSRF-Token` 或类似字段,也可能导致 401 或 403 错误。 前端可以通过从 Cookie 中读取 CSRF Token 并添加到请求头中解决此问题。 ### 排查建议 - 使用浏览器开发者工具(F12)查看 Network 面板中请求的详细信息,包括: - 请求头(Headers)中是否包含 `Authorization` 和 `Content-Type`; - 请求体(Payload)是否符合后端预期; - 返回状态码和响应体内容,确认是否为 Token 过期等具体提示。 [^2] - 后端日志中检查是否接收到请求,以及是否因 Token 校验失败或缺失而拒绝请求。 - 使用 Postman 或 curl 模拟请求,验证是否仍返回 401 错误,以排除前端代码逻辑干扰。 ### 示例:使用 Postman 模拟请求 ```http POST /device_manage/sync HTTP/1.1 Host: yourdomain.com Authorization: Bearer your_token_here Content-Type: application/json { "deviceNumber": "123456" } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值