Post请求出现404错误及POST方法不允许问题排查求助
问题分析与解决方案
你的问题是代码层面的路径映射配置导致的,和Postman配置无关,以下是具体原因和解决办法:
1. 路径末尾斜杠的冲突
你的Controller类上用了@RequestMapping("/Users"),POST方法用@PostMapping("/"),组合起来实际映射的是/Users/。但Spring MVC默认会对不带末尾斜杠的路径(比如/Users)做重定向,而POST请求不支持重定向操作,这就会导致你看到的“POST方法不允许”或者404错误。
解决办法二选一:
- 去掉POST方法注解里的斜杠,直接写成
@PostMapping,这样映射路径就是/Users,请求时用http://localhost:8098/Users(不带末尾斜杠) - 保留
@PostMapping("/"),但请求时使用http://localhost:8098/Users(不带末尾斜杠),Spring会自动匹配到/Users/的POST映射
2. 请求Body的类型不匹配
你请求Body里的departmentId是字符串类型的"1",但实体类User中对应的字段是Long departmentId。虽然Spring通常能自动转换字符串到Long,但这种类型不一致可能引发请求解析失败,间接导致404/405问题。建议把请求Body改成:
{ "firstName": "sakti", "lastName": "behera", "email": "sakti.behera@gmail.com", "departmentId": 1 }
3. 添加/save路径后的注意事项
如果你尝试把POST方法改成@PostMapping("/save"),那请求路径必须改成http://localhost:8098/Users/save,否则依然会出现404。一定要保证请求路径和注解配置的路径完全一致。
修改后的Controller示例
@RestController @RequestMapping("/Users") public class UserController { @Autowired private UserService userService; // 直接映射到/Users,无需末尾斜杠 @PostMapping public User saveUser(@RequestBody User user) { return userService.saveUser(user); } @GetMapping("/{id}") public ResponseTemplateVO getUserWithDepartment(@PathVariable("id") Long userId ) { return userService.getUserWithDepartment(userId); } }
额外检查点
- 确认Spring Boot应用确实在8098端口启动,控制台会打印启动端口信息
- Postman中选择正确的POST方法,Body设置为
raw->JSON格式 - 查看Spring启动日志,确认是否有
POST /Users(或POST /Users/)的映射记录,如果没有,说明Controller没有被正确扫描到
内容的提问来源于stack exchange,提问作者Sakti
相关产品推荐
相关产品推荐

