I try to call Google API with multiple query string parameters. And curiously, I can't find a way to do that.
This is my FeignClient :
@FeignClient(name="googleMatrix", url="https://maps.googleapis.com/maps/api/distancematrix/json")
public interface GoogleMatrixClient {
@RequestMapping(method=RequestMethod.GET, value="?key={key}&origins={origins}&destinations={destinations}")
GoogleMatrixResult process(@PathVariable(value="key") String key,
@PathVariable(value="origins") String origins,
@PathVariable(value="destinations") String destinations);
}
The problem is that '&' character of the RequestMapping value
is replace by &
How to avoid this ?
Thanks !
Query parameters can be configured in Feign clients by using the @RequestParam annotation from the Spring web framework on method arguments which should be passed as query parameters when calling the remote service.
Feign has a way to provide the dynamic URLs and endpoints at runtime. The following steps have to be followed: In the FeignClient interface we have to remove the URL parameter. We have to use @RequestLine annotation to mention the REST method (GET, PUT, POST, etc.):
Overview. FeignClient is a Declarative REST Client in Spring Boot Web Application. Declarative REST Client means you just give the client specification as an Interface and spring boot takes care of the implementation for you. FeignClient is used to consume RESTFul API endpoints exposed by thirdparty or microservice.
All Query parameters will automatically be extracted from the url by a split using the &
character and mapped to the corresponding @RequestParam
in the method declaration.
So you don't need to specify all the keys the @RequestMapping
annotation and there you should only specify the endpoint value.
For your example to work you just need to change your rest-endpoint to:
@RequestMapping(method=RequestMethod.GET)
GoogleMatrixResult process(@RequestParam(value="key") String key,
@RequestParam(value="origins") String origins,
@RequestParam(value="destinations") String destin);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With