java - 如何在Spring中根据不同类型的路径变量删除DeleteMapping?

标签 java spring spring-boot rest http-delete

我正在尝试在 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) {
或者你可以同时服用 idname如果您想在 Controller 中的一种方法中映射这两个操作,则作为查询参数。

关于java - 如何在Spring中根据不同类型的路径变量删除DeleteMapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62853266/

相关文章:

java - Hibernate Criteria 将两个表与第二个表上的条件连接起来,结果是第一个表

Spring集成-文件:inbound-channel-adapter - remove original file

spring - Spring Security如何在Grails中调用remoteFunction时重定向到登录

java - 使用 Angular 从 HAL 表示中获取 id

java - Spring 启动部署

spring-boot - 使用 Logback MDC 进行 Spring Boot ErrorController 日志记录

java - Maven 错误 : Could not find or load main class

java.lang.IllegalStateException : Encountered invalid @Scheduled method 'execute' : For input string: "1#1"

java - 无法在 Spring Boot 应用程序中实例化 session 工厂

java - 如何告诉 CDI 容器 "activate"一个 bean?