【发布时间】:2014-04-18 12:29:55
【问题描述】:
我想使用 Spring 定义 REST API。我有这 2 个 @Controller 方法:
@RequestMapping(value = "/{machineId}/workspaces/{workspaceId}", method = RequestMethod.DELETE)
public void removeWorkspace(@PathVariable String machineId, @PathVariable String workspaceId {...}
@RequestMapping(value = "/{machineId}", method = RequestMethod.DELETE)
public void removeVM(@PathVariable String machineId) {...}
问题是,这个定义导致路径冲突:如果我尝试调用
curl -X DELETE http://localhost/machine-1/workspaces/workspace-1
我希望应该调用“removeWorkspace”,但问题是调用了“removeVM”。有人知道如何避免这种冲突吗? {machineId} 前缀可能会导致此冲突。当然,我想保持这些路径不变。
谢谢
【问题讨论】:
-
请显示这件事的例外情况。
-
哪个例外?也不例外,只是Spring调用了错误的方法。
-
好的。
Best match。正在调查... -
刚刚用 Spring MVC 4.0.3 测试过,效果很好
-
感谢测试。我在 Spring 3.1.1
标签: java spring rest path conflict