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

Spring项目中DELETE请求方法不支持问题求助

Spring项目中DELETE请求方法不支持问题求助

嘿,我一眼就瞅到问题出在哪儿啦!你的DELETE请求报“Request method 'DELETE' is not supported”,核心问题全在Controller的路径映射上,咱们一步步捋清楚:

问题根源分析

你在Postman里发的请求是http://localhost:8080/v1/tasks/1,但你的Controller方法映射写得不对:

  • 首先,@DeleteMapping里的路径"taskId"没有写成路径变量的格式,Spring根本识别不出路径里的数字是要传给taskId参数的,正确的写法应该是{taskId}
  • 其次,你的请求路径带了/v1/tasks的前缀,但你的Controller方法上没对应上这个前缀,导致Spring找不到这个请求的处理方法

修正后的Controller示例

给你两种修正方案,选哪种都可以:

方案1:给Controller类加全局路径前缀(更规范,推荐)

@RestController
@RequestMapping("/v1/tasks") // 类级别统一加前缀
public class TaskController {

    @Autowired
    private DbService service;

    @DeleteMapping("/{taskId}") // 这里只需要定义路径变量部分
    public ResponseEntity<String> deleteTask(@PathVariable Long taskId) throws TaskNotFoundException {
        service.deleteTask(taskId);
        return ResponseEntity.ok("Deleted successfully " + taskId);
    }
}

方案2:直接在DeleteMapping里写完整路径

@RestController
public class TaskController {

    @Autowired
    private DbService service;

    @DeleteMapping("/v1/tasks/{taskId}") // 直接写完整的请求路径
    public ResponseEntity<String> deleteTask(@PathVariable Long taskId) throws TaskNotFoundException {
        service.deleteTask(taskId);
        return ResponseEntity.ok("Deleted successfully " + taskId);
    }
}

额外检查点

最后再帮你排查几个容易忽略的小细节:

  • 确保你的Controller类上标注了@RestController或者@Controller注解,不然Spring不会把它当成请求处理类
  • 检查请求和代码里的路径拼写,比如你请求用的是tasks(复数),别在代码里写成单数task了
  • 你的Service和Repository代码看起来完全没问题,不用动它们

备注:内容来源于stack exchange,提问作者Robert Wyszynski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:13:03