Вызовите еще один 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();
Удачного кодирования :)