【问题标题】:List of possible values for particular path variable in Spring MVCSpring MVC 中特定路径变量的可能值列表
【发布时间】: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


【解决方案1】:

在映射中使用正则表达式可以轻松完成:

@RequestMapping("/persons/{searchField:id|code|email}/{searchValue}")

【讨论】:

    【解决方案2】:

    您还可以使用枚举作为 @PathVariable 的类型,这将使​​ Spring 将接受的请求值限制为枚举的值

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 2018-11-02
      • 2014-01-24
      相关资源
      最近更新 更多