我正在尝试在 Spring 中构建一个 REST 应用程序,我需要根据某些路径变量删除资源。
例如,我想通过 id 删除资源
@DeleteMapping("resources/{id}")
或按名称@DeleteMapping("resources/{name}")
但是当我执行上述操作时,出现错误java.lang.IllegalStateException: Ambiguous handler methods
据我了解,Servlet 无法判断 123
在路径中 /resources/123
代表一个 ID 或一个名字,因此有歧义。那么我应该如何设计我的 REST 端点,其中 DELETE 基于某个参数或参数的组合发生?
最佳答案
由 id
删除使用路径变量映射很好
@DeleteMapping("resources/{id}")
由 name
删除您可以将名称作为查询参数@DeleteMapping("resources")
public ResponseEntity<?> delete(@RequestParam(value = "name") String name) {
或者你可以同时服用 id
和 name
如果您想在 Controller 中的一种方法中映射这两个操作,则作为查询参数。
关于java - 如何在Spring中根据不同类型的路径变量删除DeleteMapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62853266/