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

Spring Employee实体API POST/PUT等请求返回405错误如何解决?

问题原因

你遇到的405错误(HttpRequestMethodNotSupportedException)为Spring MVC未匹配到对应HTTP方法的处理器导致,结合你提供的代码,常见诱因如下:

  • 请求未携带正确的Content-Type头:你的控制器中@PostMapping、@PutMapping、@PatchMapping均显式配置了consumes="application/json",仅接收请求头Content-Type为application/json的请求,若测试时未配置该头,会直接触发405错误。
  • Spring Security CSRF拦截:若项目引入了Spring Security依赖,默认开启的CSRF防护会拦截所有非GET类型的请求,未携带合法CSRF Token的请求会被拦截返回405/403错误。
  • 请求路径不匹配:你当前配置的@PutMapping未绑定路径参数,仅匹配PUT /app-api/employees请求,若测试时发送PUT /app-api/employees/{id}这类带id的PUT请求,会找不到对应处理器。
解决方案

1. 配置正确的请求头

测试POST/PUT/PATCH请求时,在请求头中添加Content-Type: application/json即可匹配到对应接口。

2. 关闭CSRF防护(前后端分离场景适用)

如果是前后端分离项目无需CSRF防护,可新增Spring Security配置类关闭该功能:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 关闭CSRF防护
        http.csrf().disable()
            // 权限规则可根据自身业务调整
            .authorizeRequests()
            .anyRequest().permitAll();
    }
}

如果项目未引入Spring Security依赖可跳过该步骤。

3. 调整接口路径适配业务需求

如果需要支持带id的PUT请求,可修改PutMapping配置:

@PutMapping(value = "/{id}", consumes="application/json")
@ResponseStatus(HttpStatus.OK)
public Employee update(@PathVariable("id") Long id, @RequestBody Employee employee) {
    employee.setEmployeeId(id);
    return empRepo.save(employee);
}

接口映射参考

调整后各请求的对应映射如下:

请求方法路径功能
GET/app-api/employees查询所有员工
GET/app-api/employees/{id}查询指定ID员工
POST/app-api/employees新增员工
PUT/app-api/employees/{id}全量更新指定ID员工
PATCH/app-api/employees/{id}部分更新指定ID员工
DELETE/app-api/employees/{id}删除指定ID员工

内容的提问来源于stack exchange,提问作者Miki Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:54:07