web-dev-qa-db-ja.com

FeignClientで複数のクエリ文字列パラメータを使用してURLを呼び出す方法は?

複数のクエリ文字列パラメータを使用してGoogleAPIを呼び出そうとしています。そして不思議なことに、私はそれを行う方法を見つけることができません。

これは私の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);

}

問題は、RequestMapping valueの '&'文字が&に置き換えられることです。

これを回避する方法は?

ありがとう!

7
jeremieca

すべてのクエリパラメータは、&文字を使用した分割によってURLから自動的に抽出され、メソッド宣言の対応する@RequestParamにマップされます。したがって、@ RequestMappingアノテーションのすべてのキーを指定する必要はなく、エンドポイント値のみを指定する必要があります。

あなたの例が機能するためには、RESTエンドポイントをに変更する必要があります

@RequestMapping(method=RequestMethod.GET)
GoogleMatrixResult process(@RequestParam(value="key") String key,
                           @RequestParam(value="origins") String origins,
                           @RequestParam(value="destinations") String destinations);
14
Alex Ciocan