Как сделать запрос GET с телом запроса, используя restTemplate в Spring - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь сделать запрос GET на URL с телом запроса.После поиска в Интернете я обнаружил, что для меня это противоречит соглашению включать тело запроса с запросом GET.Но я все еще хочу знать, есть ли способ, так как Почтальон позволяет функциональность.Я пытаюсь реализовать эту функцию в Spring, как правило, используя их класс RestTemplate.У меня есть следующее:

   public List<CustomObj> findLeads(List<String> usernames)
   {
      log.info("getLeads:+ usernames={}", usernames);
      final HttpEntity<List<String>> httpEntityWithHeaders = createHttpEntityWithHeaders(usernames);
      final String uri = serviceHost + RESTFulURIConstants.LEADS_PATH_VIA_USERNAME;

  log.info("Calling uri from getLeads method, uri={}", uri);

  final ResponseEntity<List<CustomObj>> responseEntity = restTemplate.exchange(uri,
                                                                                  HttpMethod.GET,
                                                                                  httpEntityWithHeaders,
                                                                                  TYPE_REFERENCE_LEAD_RESPONSE);

  log.info("getLeads:-");

  return responseEntity.getBody();
}

   private HttpEntity<List<String>> createHttpEntityWithHeaders(final List<String> usernames)
   {
      final HttpHeaders headers = new HttpHeaders();
      headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
      headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
      return new HttpEntity<>(usernames, headers);
   }
   private static final ParameterizedTypeReference<List<CustomObj>>
  TYPE_REFERENCE_LEAD_RESPONSE = new ParameterizedTypeReference<List<CustomObj>>()
{
};

Но я продолжаю получать сообщение об ошибке: "Required request body is missing: public java.util.List<CustomObj>.Я могу назвать это успешно, используя Postman, и Postman даже имеет эту функцию, где он генерирует код для желаемого языка (статья) Я попробовал этот метод, и Unirest и OKHttp не позволяют мне иметь тело запроса какчасть моего запроса.

Есть предложения?

Кроме того, каков отраслевой стандарт в использовании GET для больших запросов, которые обычно не включаются в параметры запроса?

1 Ответ

0 голосов
/ 27 сентября 2019

Если это обычный запрос на получение, отправьте параметры в URL.

Если требуются данные в теле вашего запроса, я советую вам сделать этот запрос как запрос PATCH.если данные не так важны для запроса, но вы хотите, чтобы клиенту было разрешено отправлять некоторые данные, тогда это не проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...