有没有办法在spring boot中验证补丁请求正文?
Ex:
[
{"op": "replace", "path": "/id", "value": "foo"},
{"op": "replace", "path": "/id2", "value": "foo2"}
]
如果任何用户将带有“op”(字段)的请求作为“xx”和“path”(字段)发送为“se”。有没有办法验证它并抛出400(错误请求),而不改变合同?
答案 0 :(得分:3)
我尝试了很多方法来解决这个问题。但最后不得不采用这种解决方案。
我的补丁请求签名:
public void patch(@RequestBody List<PatchOperation> operations)
我创建了一个简单的函数来验证请求中是否存在有效的补丁密钥。
void validatePatchOperation(PatchOperation patchOperation) {
if (patchOperation.getOp() == null) {
throw new BadRequestException();
}
if (patchOperation.getPath() == null) {
throw new BadRequestException();
}
if (patchOperation.getValue() == null) {
throw new BadRequestException();
}
}
并在for-each
中使用了这个