5

で API を呼び出す簡単なアプリを構築しようとしていますquarkus-rest-client。API のすべてのリソースで同じヘッダーとして API キーを挿入する必要があります。dev/qa/prodそこで、この API キーの値 (環境によって異なります) を にあるapplication.propertiesファイルに入れたいと思いますsrc/main/resources

これを達成するためにさまざまな方法を試しました:

  • 値プロパティcom.acme.Configuration.getKeyに直接使用@ClientHeaderParam
  • ClientHeadersFactory インターフェースを実装して構成を注入する StoresClientHeadersFactory クラスを作成します。

最後に、それを機能させるために以下に説明する方法を見つけました。

私の質問は:それを行うためのより良い方法はありますか?

これが私のコードです:

  • API に到達するためのクライアントであるStoreService.java
@Path("/stores")
@RegisterRestClient
@ClientHeaderParam(name = "ApiKey", value = "{com.acme.Configuration.getStoresApiKey}")
public interface StoresService {

    @GET
    @Produces("application/json")
    Stores getStores();

}
  • 構成.java
@ApplicationScoped
public class Configuration {

    @ConfigProperty(name = "apiKey.stores")
    private String storesApiKey;

    public String getKey() {
        return storesApiKey;
    }

    public static String getStoresApiKey() {
        return CDI.current().select(Configuration.class).get().getKey();
    }

}
  • REST コントローラーであるStoresController.java
@Path("/stores")
public class StoresController {

    @Inject
    @RestClient
    StoresService storesService;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Stores getStores() {
        return storesService.getStores();
    }

}
4

2 に答える 2