Вызовите еще один api для отдыха с моего сервера в Spring -Boot

Я хочу вызвать другой web-api из моего бэкэнда по конкретному запросу пользователя. Например, я хочу позвонить Google FCM отправить сообщение api, чтобы отправить сообщение конкретному пользователю о событии.

Есть ли у Retrofit какой-либо метод для этого? Если нет, то как я могу это сделать?

Ответ 1

На этом веб-сайте есть несколько хороших примеров для использования spring RestTemplate. Вот пример кода, как он может работать, чтобы получить простой объект:

private static void getEmployees()
{
    final String uri = "http://localhost:8080/springrestexample/employees.xml";

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(uri, String.class);

    System.out.println(result);
}

Ответ 2

Вместо String вы пытаетесь получить данные объекта POJO в качестве вывода, вызывая другой API/URI, попробуйте это решение. Я надеюсь, что это будет понятно и полезно, как использовать RestTemplate также,

В Spring Boot сначала нам нужно создать Bean для RestTemplate в аннотированном классе @Configuration. Вы даже можете написать отдельный класс и аннотировать с помощью @Configuration, как показано ниже.

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
       return builder.build();
    }
}

Затем вам нужно определить RestTemplate с помощью @Autowired или @Injected в вашем сервисе/контроллере, где бы вы ни пытались использовать RestTemplate. Используйте приведенный ниже код,

@Autowired
private RestTemplate restTemplate;

Теперь посмотрим, как вызвать другой API из моего приложения, используя созданный выше RestTemplate. Для этого мы можем использовать несколько методов, таких как execute(), getForEntity(), getForObject() и т.д. Здесь я размещаю код с примером execute(). Я даже попробовал другие два, я столкнулся с проблемой преобразования возвращенного LinkedHashMap в ожидаемый объект POJO. Приведенный ниже метод execute() решил мою проблему.

ResponseEntity<List<POJO>> responseEntity = restTemplate.exchange(
    URL, 
    HttpMethod.GET, 
    null, 
    new ParameterizedTypeReference<List<POJO>>() {
    });
List<POJO> pojoObjList = responseEntity.getBody();

Удачного кодирования :)