我正在尝试验证 JSON(由客户端作为请求正文传递),然后再将其转换为 Controller 方法中的模型。
如果验证通过,则不返回任何内容,让该过程按原样继续(Spring启动将JSON转换为标记为@Request estBody的模型)。如果验证失败,则抛出错误(everit-org/json-Schema)。
我试着想了两个办法:
>
实现HandlerMethodArgumentResolver
,但resolveArgument()
不提供请求体详细信息,因为它已被读取并存储在ContentCachingRequestWrapper
。
注意:< code > ContentCachingRequestWrapper 中的< code>inputStream没有任何请求正文详细信息。
使用spring 拦截器
。但是这并不能帮助我找到请求中传递的请求体类型。因为每个请求的JSON模式是不同的。
我可以尝试其他方法吗?
我无法添加评论…所以。。。
你需要什么样的确认?如果您只想验证字符串长度或数字范围等字段。我建议您对控制器方法参数和型号使用< code>@Validated:
@NotNull
@Size(min = 32, max = 32)
private String id;
控制器:
@PatchMapping
public Object update(@RequestBody @Validated User user, Errors errors) {
...
}
如果出现问题,errors.hasErrors()
将返回 true
。
编辑:
好的,我在过滤器中做了一些测试:
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
ServletInputStream inputStream = httpServletRequest.getInputStream();
byte[] a = new byte[1024];
inputStream.read(a);
System.out.println(IOUtils.toString(a));
我得到了一个json字符串(请求体的一部分):
{"template":"5AF78355A4F0D58E03CE9F55AFA850F8","bd":"" ...
问题内容: 是否可以在表单类中获取request.user数据?我想清理一个电子邮件地址以确保它是唯一的,但是如果它是当前用户的电子邮件地址,则它应该通过。 这是我目前拥有的东西,非常适合创建新用户,但是如果我要编辑用户,则会遇到他们的电子邮件无法验证的问题,因为它已经被采用。如果我可以使用request.user.email检查这是他们的电子邮件,则可以解决我的问题,但是我不确定该怎么做。 问题
问题内容: 是否有任何PHP库可根据JSON模式验证JSON对象? 问题答案: 关于jsonschemaphpv,尽管它维护得不是很好,但是我们经常使用它并且可以正常工作。这是js验证程序的端口。它具有针对php和http://code.google.com/p/jsonschema/的完整测试套件。 猜猜是什么…它比js传递了更多的测试。至少在最后一次运行测试时。问题是该项目的结构不是很好,而且
问题内容: 我正在为返回JSON对象的Java Web应用程序编写一些验收测试。我想验证返回的JSON是否针对架构进行了验证。有人可以为此建议任何工具吗? 问题答案: 该 JSON工具项目 (程序员指南)包括验证使用JSON模式的JSON文件的内容的工具。 另一种选择是使用Rhino验证运行(JavaScript) JSON Schema Validator 。
我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根
我需要在get请求中以JSON格式获取数据,数据应为以下格式: 但数据以以下形式返回,响应为字符串: 代码: 如何使用Rest Assured在get请求中获取JSON格式?
问题内容: data = { ‘ids’: [12, 3, 4, 5, 6 , …] } urllib2.urlopen("http://abc.com/api/posts/create”,urllib.urlencode(data)) 我想发送POST请求,但是其中一个字段应该是数字列表。我怎样才能做到这一点 ?(JSON?) 问题答案: 如果您的服务器期望POST请求为json,则您需要添加标