1
votes

Est-il possible de changer de serveur dans un client déclaratif HTTP micronaut?

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?


0 commentaires

3 Réponses :


0
votes

Vous devez changer. Les annotations dans Micronaut sont traitées pendant la compilation.


0 commentaires

1
votes

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);


0 commentaires

0
votes

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.


0 commentaires