使用POST接口存储数据库数据时出现GET方法不支持异常
解决Spring Boot接口GET方法不支持的问题
错误原因
你的接口使用@PostMapping("/user1")注解,明确指定该接口仅接受POST请求,但你实际调用时使用了GET方法,因此触发HttpRequestMethodNotSupportedException异常。
解决方案
方案1:改用POST请求调用接口(推荐)
这是符合REST规范的正确做法(创建资源应使用POST方法):
- 用接口测试工具(如Postman、ApiFox):选择POST方法,填写接口地址
/user1,在请求体(Body)中选择raw-JSON格式,传入符合userModel结构的JSON数据(即使代码中硬编码了字段值,也需要传入合法的JSON避免@RequestBody校验报错)。 - 前端代码调用:使用POST方式发起请求,示例(axios):
axios.post('/user1', { // 填写userModel对应字段,保证结构合法即可 userId: 0, userName: "", userEmail: "", userPass: "" }).then(res => console.log(res));
方案2:修改接口支持GET请求(不推荐)
如果业务场景确实需要用GET方法创建数据(不符合REST规范,不建议),需要调整接口注解和参数:
- 将
@PostMapping("/user1")替换为@GetMapping("/user1"); - 移除
@RequestBody userModel user参数(GET请求无请求体),若需接收参数改用@RequestParam或路径参数。修改后的代码示例:@RestController public class userController { @Autowired userRepo Userrepo; @GetMapping("/user1") public userModel createUser() { userModel user = new userModel(); user.setUserId(111); user.setUserName("sury"); user.setUserEmail("sury@gmail.com"); user.setUserPass("LeoLeo"); return Userrepo.save(user); } }
注意事项
REST规范中,POST用于创建资源、GET用于查询资源,优先选择方案1来保持接口语义的正确性,避免混淆接口用途。
内容的提问来源于stack exchange,提问作者SURYA-DEVELOPER
相关产品推荐
相关产品推荐

