我有像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中检索所有记录。
有没有办法对可选的请求参数进行验证?
如果你想坚持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