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

如何为同一方法配置@PostMapping与@DeleteMapping两种URL映射?

解决方案

这里提供两种优雅的方式实现需求,避免代码重复:

方法一:使用@RequestMapping组合路径与请求方法

直接在方法上通过@RequestMapping的value指定多个路径,method指定多个请求方法,让同一个方法同时处理两种请求:

package com.example.demo;

import org.springframework.web.bind.annotation.*;

@RestController
public class MyController {

    @RequestMapping(
        value = {"/sth", "/sth/delete"},
        method = {RequestMethod.POST, RequestMethod.DELETE}
    )
    public String deleteSth(){
        return "delete success";
    }

}

该配置会同时匹配:

  • POST 请求 http://localhost:8080/sth/delete
  • DELETE 请求 http://localhost:8080/sth

方法二:控制器级别@RequestMapping+方法级快捷注解

把公共路径提取到控制器的@RequestMapping中,再在方法上用快捷注解分别指定剩余路径和请求方法,代码结构更清晰:

package com.example.demo;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/sth")
public class MyController {

    @DeleteMapping("")
    @PostMapping("/delete")
    public String deleteSth(){
        return "delete success";
    }

}

这种写法的效果和方法一完全一致,只是把路径拆分到了控制器层面,更符合RESTful风格的代码组织方式。

关于你之前写法不生效的原因

@PostMapping和@DeleteMapping是@RequestMapping的快捷封装,虽然语法上允许在同一个方法上添加多个这类注解,但部分Spring版本或场景下会出现映射注册异常,导致其中一个注解不生效。而使用@RequestMapping的value和method数组参数是官方推荐的多映射绑定方式,稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:50:35