java - 将 Java 对象字段转换为 URI 中的查询参数

标签 java spring rest http jackson

我的问题是:如何将我的 Java 对象中的所有字段作为查询参数添加到 URI。

我正在尝试使用多个查询参数调用 HTTP GET 请求。所有这些查询参数都来自一个 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();

以下按预期工作,但我想知道是否有更简单的方法来实现它。

最佳答案

您可以跳过制作 MultiValueMap 并将参数直接传递给 UriBuilder。

  uri = uriBuilder().path(RestResourcePaths.My_PATH);
 objectMapper.convertValue(myFilter, new TypeReference<Map<String,String>>() {})
 .forEach(uri::queryParam)

关于java - 将 Java 对象字段转换为 URI 中的查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41935810/

相关文章:

java - 临时文件未找到文件异常

java - Android to servlet 图片上传保存到服务器

java - 这是 'Static Bean' 的示例吗?

java - 如何使用curl使用2个参数进行POST?休息。 java

休息 WCF 与 Web api

java - while 循环内的方法

java - Android Studio 显示不可读语言

java - Spring MVC : User object bean best practive

java - java 服务的多个实例中的相同事件处理

rest - Nest 访问 token 过期后会发生什么?