【发布时间】:2017-01-24 20:10:24
【问题描述】:
考虑三个 REST 资源:
/persons/id/{id}
/persons/code/{code}
/persons/email/{email}
我想在Spring MVC 控制器中创建一种方法来处理这些请求:
@RequestMapping("/persons/{searchField}/{searchValue}")
public Person search(@PathVariable field, @PathVariable value) {
...
}
问题是:除了在方法search 中检查它们之外,还有什么优雅的方法可以限制searchField 的变量值列表在注释级别?
switch (field) {
case "id": ...
case "code": ...
...
default: // not found exception??
}
【问题讨论】:
-
不要。定义三个方法,每个方法都有相应的路径。
-
优雅的方法是为每个可接受的 searchField 值定义一个方法,正如上面 Sotirios 所指出的那样
-
@RequestMapping("/persons) 和使用 RequestParam 代替 PathVariable 怎么样?
-
@SotiriosDelimanolis 我实际上可以很容易地做到这一点,看看我的回答:-D
标签: java spring rest spring-mvc