REST API Query с параметром - PullRequest
       6

REST API Query с параметром

0 голосов
/ 02 февраля 2019

Я пытаюсь запросить сервер, который выглядит следующим образом:

Код сервера

@RequestMapping(value = "/query_user", method = RequestMethod.GET)
public String queryUser(@RequestParam(value="userId", defaultValue="-1") String userId)
{
    int id = Integer.parseInt(userId);
    User user = this.service.getUser(id);
    ...
    return userJson;
}

Этот метод работает при тестировании с PostMan

Код клиента

private synchronized void callServer(int id)
{
     final String URI = "http://localhost:8081/query_user";
     RestTemplate restTemplate = new RestTemplate();
     MultiValueMap<String, Object> map = new LinkedMultiValueMap();
     map.add("userId", id);

     restTemplate.getMessageConverters()
            .add(new MappingJackson2HttpMessageConverter());

     // Modified to use getForEntity but still this is not working.
     ResponseEntity<String> response 
          = restTemplate.getForEntity(URI, String.class, map); 
}

Как я могу это исправить?Важно, чтобы я получил userJson со стороны сервера.


РЕДАКТИРОВАТЬ

После перехода на метод getForEntity() я продолжаю получать defaultValue из -1 нана стороне сервера.Должно быть что-то еще не так с моим кодом.Я определенно отправляю userId, который НЕ -1.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Я смог решить эту проблему с помощью UriComponentsBuilder.

UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(URI)
        .queryParam("userId", id);

По сути, он добавляет параметр в URI, что, как я полагаю, делает PostMan (именно так я и думал об этом).

Ссылка: https://www.oodlestechnologies.com/blogs/Learn-To-Make-REST-calls-With-RestTemplate-In-Spring-Boot

0 голосов
/ 02 февраля 2019

Ваш queryUser() метод сопоставлен с GET;с клиента звоните POST restTemplate.postForEntity

...