这是我的方法代码:
@RequestMapping(value="/api/restcall", method=GET)
public response methodcall (@RequestParam (value="testId", required=false) String testId, @RequestParam (value="requestId", required=false) String requestId){
//some code
}
我想验证请求参数。不是值,而是字段本身。
API调用:
localhost:8080/api/restcall?requestId=abcd&testId=xyz
我想验证“requestId”和“testId”是否已正确发送(如果已发送)。不是值,而是 key 本身。注意:requestParams 不是必填字段。
因此,如果进行以下 API 调用:
localhost:8080/api/restcall?request=abcd&test=xyz
我希望代码能够验证请求参数是否不正确。我尝试了@Validate注释和@Valid注释。两者都不起作用。
当像上面这样进行不正确的调用时,代码将通过,因为这些字段不是强制性的。
我想知道如果 testId 和 requestId 未发送,则会传入哪些参数。如果我有此信息,我可以进行验证。
最佳答案
REST 调用的验证无法以这种方式进行。
这将验证发送参数的值,而不是它们的名称。
因此,当参数的 required
属性设置为 false
时,不会发生违规约束。
Jackson 处理可能会忽略发送参数的无效名称。
如果你想执行这样的验证,你应该使用自定义 validator 或自定义验证。
例如:
String errorMsg = "";
if (StringsUtil.isEmpty(testId)){
errorMsg+="testId param name missing";
}
if (StringsUtil.isEmpty(requestId)){
errorMsg+="requestId param name missing";
}
if (!errorMsg.equals("")){
throw new ValidationException(errorMsg);
}
关于java - SpringBoot : requestParam value validation when required=false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955138/