Шаблон Spring Rest + ошибка MapStruct 400 BAD_REQUEST - PullRequest
0 голосов
/ 14 марта 2019

Имеет следующую реализацию:

    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.set("key", "72hdjas721398721");

    Application application = appRepository.findById(customerId)
            .get();
    BasicRequestMapper mapper = Mappers.getMapper(BasicRequestMapper.class);
    BasicRequest basicRequest = mapper.customerToBasicRequest(application);

    HttpEntity<BasicRequest> entity = new HttpEntity<>(basicRequest, headers);      
    try {
        ResponseEntity<Response> response = restTemplate.exchange(url, HttpMethod.POST, entity,
                Response.class);
        return response;
    } catch (HttpClientErrorException e) {
        System.out.println(e.getResponseBodyAsString());
    }

Краткое описание реализации: я использую Springs RestTemplate для выполнения запроса POST, отправляющего POJO на него.

Во время выполненияпри обмене я получаю следующую ошибку:

2019-03-14 11:19:51.300 DEBUG 7448 --- [           main] o.s.web.client.RestTemplate              : Response 400 BAD_REQUEST
{"key":"unknown.error.found","message":"Unexpected end-of-input in field name\n at [Source: java.io.PushbackInputStream@42450be5; line: 1, column: 1523]"}

Это сообщение уже обработано серверной стороной, поэтому я получаю «ключ»: «unknown.error.found», «message» всообщение об ошибке. Но вторая часть, по-видимому, является ошибкой, выдвинутой Джексоном при десериализации сообщения.

Объект, который я отправляю, является простым POJO с несколькими свойствами с геттерами и сеттерами.используя mapstruct, чтобы отобразить только свойства, которые я хочу от сущностей, в это pojo.

Пример: 2019-03-14 11:19:50.763 DEBUG 7448 --- [ main] o.s.web.client.RestTemplate : Writing [BasicRequest [bankAccount=BankAccountDto [iban=DE12500105170648489890, holder=1]] as "application/json"

Не могли бы вы посоветовать?

1 Ответ

0 голосов
/ 16 марта 2019

Просмотр отладочного вывода

2019-03-14 11:19:50.763 DEBUG 7448 --- [           main] o.s.web.client.RestTemplate              : Writing [BasicRequest [bankAccount=BankAccountDto [iban=DE12500105170648489890, holder=1]] as "application/json"

Похоже, что RestTemplate не отправляет наш контент в формате JSON. Не уверен, как выглядят ваши зависимости. Однако, скорее всего, вам не хватает Джексона в качестве зависимости. Если вы добавите его, он должен отправить правильные данные.

...