我的英语不好,所以有些句子可能会让你感到困惑,很抱歉。
我需要一个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都复制.
1条答案
按热度按时间kwvwclae1#
通常情况下,你不能在同一个方法上添加两个XxxMapping,这是spring mvc的限制,你可以看看spring的源代码:
RequestMappingHandlerMapping.createRequestMappingInfo(AnnotatedElement element)
它将从控制器方法中获取单个RequestMapping注解。
因此可以定义两个方法,一个使用@PostMapping,另一个使用@DeleteMapping
或者您需要重写Springbean来定义所有注解。