我设置了一个API进行验证,并且那里没有问题。我的挑战是调用该API时,它将无法通过验证。当我的请求验证失败时,我不知道如何将响应直接映射到现有的Java类(当我知道这些类在我正在使用的框架中的某个位置时,我不想创建自己的类)。验证失败时,经过JSR-303验证的Spring API会映射到哪个类?
每个用于验证的“操作方法”网站都只谈论创建API,而不是使用它。
// Calling Code:
restTemplate.postForObject(serviceUrl, entity, ExpectedResponse.class)
// API Code:
@RequestMapping(path = "/api/endpoint", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<ExpectedResponse> apiMethod(@Validated({ ExtraValidation.class, DefaultValidation.class }) @RequestBody ExpectedData myExpectedData]) {
我想调用此API来消耗快乐路径(响应实体为ExpectedResponse.class),但也将验证失败映射到Java类?
如果我必须使用JSON映射器,那很好。主要问题是要知道验证响应在现有框架(Spring,Springboot,Hibernate等)中映射到哪个类进行处理。
示例响应:
<Map>
<timestamp>1548946732529</timestamp>
<status>400</status>
<error>Bad Request</error>
<exception>org.springframework.web.bind.MethodArgumentNotValidException</exception>
<errors>
<codes>
<codes>NotEmpty.expectedData.dataInitial</codes>
<codes>NotEmpty.dataInitial</codes>
<codes>NotEmpty.java.lang.String</codes>
<codes>NotEmpty</codes>
</codes>
<arguments>
<arguments>
<codes>
<codes>expectedData.dataInitial</codes>
<codes>dataInitial</codes>
</codes>
<defaultMessage>dataInitial</defaultMessage>
<code>dataInitial</code>
</arguments>
</arguments>
<defaultMessage>may not be empty</defaultMessage>
<objectName>expectedData</objectName>
<field>dataInitial</field>
<rejectedValue/>
<bindingFailure>false</bindingFailure>
<code>NotEmpty</code>
</errors>
<message>Validation failed for object='myExpectedData'. Error count: 2</message>
<path>/api/endpoint</path>
</Map>