是因为PUT方法在默认情况下是被禁用的。PUT方法用于更新资源,但是Spring MVC默认只允许使用GET和POST方法。要解决这个问题,可以通过以下几种方式:
@PutMapping("/resource/{id}")
public ResponseEntity<?> updateResource(@PathVariable("id") Long id, @RequestBody Resource resource) {
// 更新资源的逻辑
return ResponseEntity.ok().build();
}
推荐的腾讯云相关产品:云服务器CVM、负载均衡CLB、云数据库MySQL、对象存储COS等。详细产品介绍请参考腾讯云官方文档:腾讯云产品
spring.mvc.hiddenmethod.filter.enabled=true
推荐的腾讯云相关产品:云服务器CVM、负载均衡CLB、云数据库MySQL、对象存储COS等。详细产品介绍请参考腾讯云官方文档:腾讯云产品
@Component
public class HttpPutFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (request.getMethod().equalsIgnoreCase(HttpMethod.PUT.name())) {
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(request) {
@Override
public String getMethod() {
return HttpMethod.POST.name();
}
};
filterChain.doFilter(requestWrapper, response);
} else {
filterChain.doFilter(request, response);
}
}
}
然后在Spring的配置文件中注册该Filter:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private HttpPutFilter httpPutFilter;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(httpPutFilter);
}
}
推荐的腾讯云相关产品:云服务器CVM、负载均衡CLB、云数据库MySQL、对象存储COS等。详细产品介绍请参考腾讯云官方文档:腾讯云产品
总结:Spring Web应用程序在PUT调用时返回405错误可以通过使用@PutMapping注解、配置HttpMethod或自定义Filter来解决。腾讯云提供了丰富的云计算产品,如云服务器CVM、负载均衡CLB、云数据库MySQL、对象存储COS等,可根据具体需求选择相应的产品。
领取专属 10元无门槛券
手把手带您无忧上云