Использовать ответ от утвержденного JSR-303 Spring API? - PullRequest
0 голосов
/ 31 января 2019

Я установил API для проверки, и у меня нет проблем там.Моя проблема заключается в вызове этого API, и он не проходит проверку.Я не знаю, как сопоставить ответ напрямую с существующими классами Java, когда мой запрос не проходит проверку (я не хочу создавать свои собственные классы, когда я знаю, что классы находятся где-то в рамках, которые я использую).К какому классу относится валидированный Spring API JSR-303 при сбое валидации?

Каждый «практический» сайт для валидации говорит только о создании 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, чтобы использовать happy-path (объект ответа 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>
...