1
私の問題は、JavaオブジェクトのすべてのフィールドをクエリパラメータとしてURIに追加する方法です。JavaオブジェクトフィールドをURIのクエリパラメータに変換する
複数のクエリパラメータを使用してHTTP GETリクエストを呼び出そうとしています。これらのクエリパラメータはすべて1つのJavaオブジェクトから来ます。私はSpring Frameworkによって提供されるRestTemplateとJacksonが提供するObjectMapperを使用しています。
@Override
public List<MyTypes> find(MyFilter myFilter) {
// object to Map
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> map = objectMapper.convertValue(myFilter, new TypeReference<Map<String,String>>() {});
// Map to MultiValueMap
LinkedMultiValueMap<String, String> linkedMultiValueMap = new LinkedMultiValueMap<>();
map.entrySet().forEach(e -> linkedMultiValueMap.add(e.getKey(), e.getValue()));
// call RestTemplate.exchange
return getRestTemplate().exchange(
uriBuilder().path(RestResourcePaths.My_PATH).queryParams(linkedMultiValueMap).build().toUri(),
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<MyTypes>>() {}).getBody();
次のコードは期待通りに機能しますが、それを達成するための簡単な方法があるのだろうかと思います。