Spring Boot 如何将@PostMapping和@DeleteMapping设置为一个URLMap?(没有@RequestMapping)

wgx48brx  于 2022-11-23  发布在  Spring
关注(0)|答案(1)|浏览(244)

我的英语不好,所以有些句子可能会让你感到困惑,很抱歉。
我需要一个URLMap支持这两个请求:

POST   http://localhost:8080/sth/delete
DELETE http://localhost:8080/sth

我不能使用@RequestMapping({"/sth", "/sth/delete"}),因为有重复的url方法。有什么好的方法来解决这个问题吗?

package com.example.demo;

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

@RestController
public class MyController {

    @PostMapping("/sth/delete")
    @DeleteMapping("/sth")     // this mapping not work
    public String deleteSth(){
        return "delete success";
    }

}

我的解决方案是写两个void,一个使用@PostMapping,另一个使用@DeleteMapping,并返回相同的值.如果遵循此方法,将使所有urlMap都复制.

kwvwclae

kwvwclae1#

通常情况下,你不能在同一个方法上添加两个XxxMapping,这是spring mvc的限制,你可以看看spring的源代码:
RequestMappingHandlerMapping.createRequestMappingInfo(AnnotatedElement element)
它将从控制器方法中获取单个RequestMapping注解。
因此可以定义两个方法,一个使用@PostMapping,另一个使用@DeleteMapping
或者您需要重写Springbean来定义所有注解。

相关问题