J'utilise un client http déclaratif de Micronaut pour récupérer des données à partir d'une API. Mais maintenant, j'ai besoin de changer dinamically l'adresse du serveur au moment de l'exécution. C'est possible?
Exemple:
@Client("${http.client.url}") @Header(name="Accept-Encoding", value="gzip, deflate, br") public interface CatalogClientApi {
Il est possible de changer "$ {http.client.url}" d'une manière ou d'une autre? Ou je dois passer au client http de bas niveau?
3 Réponses :
Vous devez changer. Les annotations dans Micronaut sont traitées pendant la compilation.
L'annotation @Client injecte RxHttpClient.
Vous pouvez le faire en utilisant une approche déclarative
URL url = new URL("http://your-url-here.com"); RxHttpClient client = RxHttpClient.create(url);
J'ai alors trouvé une solution simple (un peu moche):
@Client("/") @Header(name="Accept-Encoding", value="gzip, deflate, br") public interface ExampleApi { @Post("{+path}/V1/products") String post(@PathVariable String path, @Header("Authorization") String token, Body product);
Le "@Client" a un / placeholder et alors le serveur sera dans la variable de chemin utilisée dans {+ chemin}. J'ai trouvé un peu trompeur d'utiliser l'hôte ici, mais cela fonctionne parfaitement.