You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:47:07