在春假中验证可选的@Requestparam

问题描述 投票:-1回答:1

我有像http://example.com?value=xyz这样的请求,我必须为此写GET。要求是,当我有一个值时,响应必须是来自数据库的特定记录“xyz”。但是如果请求是http://example.com,即没有值,它必须从数据库中检索所有值。

因此,为了实现这一点,我在请求中有(@RequestParam(value =“name”,required = false)字符串名称)。即将值标记为可选

但问题是当我的请求是没有值的http://example.com?value=i.e时,我必须将'request is invalid'作为错误抛出并且不从DB中检索所有值。但在我的情况下,当我将param标记为可选时,它会从DB中检索所有记录。

有没有办法对可选的请求参数进行验证?

spring rest model-view-controller get
1个回答
0
投票

如果你想坚持query string风格,你可以添加两个单独的处理程序一个用于http://example.com和另一个用required=true用于http://example.com?value=xyz。而且您仍然可以使用单独的公共私有方法重用大部分代码。

然而,

如果您可以更改您的网址格式以使用path variables,它将变得更具可读性和清晰度。

@GetMapping(path={"/", "/value/{value}")
public void method(@PathVariable(name = "value", required = false) String value){
  // Your code
}

然后你可以查询这个端点

  • http://example.com
  • http://example.com/value/xyz
© www.soinside.com 2019 - 2024. All rights reserved.