实现PUT后出现Request method 'GET' not supported错误求助
嘿,刚看到你的问题,我之前也碰到过类似的情况,咱们一步步来排查原因并解决:
检查HTTP请求方法是否正确
首先要确认你的请求确实用了PUT方法,而不是误发成GET。有些前端框架或者请求工具可能默认用GET,或者配置时写错了方法。可以用Postman、curl这类工具直接发送PUT请求测试,比如执行这个curl命令:curl -X PUT -H "Content-Type: application/json" -d '{"你的Book实体字段":"对应值"}' http://localhost:8080/books/{你的文档ID}确保请求头里的
Request Method是PUT,而非GET。排查自定义RestController的路径冲突
如果你写了自定义的RestController,要检查它的路径是不是和Spring Data Rest自动生成的端点重复了。比如Spring Data Rest默认会给BookRepository生成/books/{id}的PUT端点,如果你自己的Controller里也有@GetMapping("/books/{id}"),但没有处理PUT请求,当你发送PUT到这个路径时,就会因为没有对应的PUT映射而报错。
解决方法是要么调整自定义Controller的路径,要么在自定义Controller里添加@PutMapping注解来处理PUT请求。检查Spring Data Rest的配置限制
看看你有没有在配置类里修改过RepositoryRestConfiguration的设置,比如有没有禁用PUT方法。比如如果有类似这样的代码:@Configuration public class RestConfig implements RepositoryRestConfigurer { @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.disableDefaultExposure(); // 或者有没有限制HTTP方法的配置 } }要确认没有禁用PUT方法的相关配置,确保Spring Data Rest能正常暴露PUT端点。
确认请求体格式和Content-Type
检查请求的Content-Type是不是application/json,如果格式不对,可能会导致框架无法正确解析请求,间接引发方法不支持的错误。确保请求头里包含Content-Type: application/json,并且请求体的JSON格式和你的Book实体类字段匹配。
内容的提问来源于stack exchange,提问作者devdre

