ユーザーの特定のリクエストでバックエンドから別のweb-apiを呼び出したいです。たとえば、Google FCM sendメッセージapiを呼び出して、イベントの特定のユーザーにメッセージを送信します。
Retrofitにこれを達成する方法はありますか?そうでない場合、どうすればそれができますか?
このWebサイトには、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);
}
別のAPI/URIを呼び出して出力としてカスタムPOJOオブジェクトの詳細を取得するの代わりに、このソリューションを試してください。 RestTemplateの使用方法についても明確で役立つことを願っています。
Spring Bootでは、最初に@ Configuration注釈付きクラスの下にRestTemplateのBeanを作成する必要があります。以下のように、別のクラスを作成して@Configurationで注釈を付けることもできます。
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}
次に、RestTemplateを使用しようとしているサービス/コントローラーの下でRestTemplate with @ Autowiredまたは@ Injectedを定義する必要があります。以下のコードを使用して、
@Autowired
private RestTemplate restTemplate;
次に、上記で作成したRestTemplateを使用して、アプリケーションから別のapiを呼び出す方法の一部を確認します。このために、execute()、getForEntity()、getForObject()などのような複数のメソッドを使用できます。ここにコードを配置していますexecute()の例。私は他の2つも試しましたが、返されたLinkedHashMapを予想されるPOJOオブジェクトに変換する問題に直面しました。以下のexecute()メソッドは私の問題を解決しました。
ResponseEntity<List<POJO>> responseEntity = restTemplate.exchange(URL, HttpMethod.GET, null, new ParameterizedTypeReference<List<POJO>>() {
});
List<POJO> pojoObjList = responseEntity.getBody();
ハッピーコーディング:)