首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Web应用程序在PUT调用时返回405错误

是因为PUT方法在默认情况下是被禁用的。PUT方法用于更新资源,但是Spring MVC默认只允许使用GET和POST方法。要解决这个问题,可以通过以下几种方式:

  1. 使用@PutMapping注解:在Controller的处理方法上使用@PutMapping注解,指定对应的URL路径。示例代码如下:
代码语言:txt
复制
@PutMapping("/resource/{id}")
public ResponseEntity<?> updateResource(@PathVariable("id") Long id, @RequestBody Resource resource) {
    // 更新资源的逻辑
    return ResponseEntity.ok().build();
}

推荐的腾讯云相关产品:云服务器CVM、负载均衡CLB、云数据库MySQL、对象存储COS等。详细产品介绍请参考腾讯云官方文档:腾讯云产品

  1. 配置HttpMethod:在Spring的配置文件(如application.properties或application.yml)中添加以下配置,启用PUT方法:
代码语言:txt
复制
spring.mvc.hiddenmethod.filter.enabled=true

推荐的腾讯云相关产品:云服务器CVM、负载均衡CLB、云数据库MySQL、对象存储COS等。详细产品介绍请参考腾讯云官方文档:腾讯云产品

  1. 自定义Filter:创建一个自定义的Filter,用于处理PUT请求。示例代码如下:
代码语言:txt
复制
@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:

代码语言:txt
复制
@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等,可根据具体需求选择相应的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • SpringBoot2核心技术-指标监控

    --------------- | ------------------------------------------------------------ | | auditevents | 暴露当前应用程序的审核事件信息。需要一个AuditEventRepository组件。 | | beans | 显示应用程序中所有Spring Bean的完整列表。 | | caches | 暴露可用的缓存。 | | conditions | 显示自动配置的所有条件信息,包括匹配或不匹配的原因。 | | configprops | 显示所有@ConfigurationProperties。 | | env | 暴露Spring的属性ConfigurableEnvironment | | flyway | 显示已应用的所有Flyway数据库迁移。 需要一个或多个Flyway组件。 | | health | 显示应用程序运行状况信息。 | | httptrace | 显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应)。需要一个HttpTraceRepository组件。 | | info | 显示应用程序信息。 | | integrationgraph | 显示Spring integrationgraph 。需要依赖spring-integration-core。 | | loggers | 显示和修改应用程序中日志的配置。 | | liquibase | 显示已应用的所有Liquibase数据库迁移。需要一个或多个Liquibase组件。 | | metrics | 显示当前应用程序的“指标”信息。 | | mappings | 显示所有@RequestMapping路径列表。 | | scheduledtasks | 显示应用程序中的计划任务。 | | sessions | 允许从Spring Session支持的会话存储中检索和删除用户会话。需要使用Spring Session的基于Servlet的Web应用程序。 | | shutdown | 使应用程序正常关闭。默认禁用。 | | startup | 显示由ApplicationStartup收集的启动步骤数据。需要使用SpringApplication进行配置BufferingApplicationStartup。 | | threaddump | 执行线程转储。 |

    01

    springBoot注解与分析

    @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。 @ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。 @EnableAutoConfiguration 自动配置。 @ComponentScan 组件扫描,可自动发现和装配一些Bean。 @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。 @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。 @Autowired自动导入。 @PathVariable获取参数。 @JsonBackReference解决嵌套外链问题。 @RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。

    01
    领券