で 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();
}
}