如何在SpringBoot中使用带有非字符串查询参数的resttemplate?

yqkkidmi  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(401)

我在一个spring启动项目中使用restemplate,我有4个查询参数,其中2个是string,1个是bigdecimal,1个是boolean:string name,string channel,bigdecimal code,boolean iscreated。我想问您如何发送这个非字符串查询参数,因为我看到getqueryparams()需要一个map<string,string>。
我正在使用这种实现:

UriComponents uriComponents = UriComponentsBuilder
            .fromHttpUrl(basePath)
            .path(apiPath)
            .getQueryParams(map)
            .encode();

任何反馈都将不胜感激。谢谢您!

1yjd4xko

1yjd4xko1#

为了 BigDecimal 以及 Boollean ,您可以尝试使用 toString() 以及 valueOf() 方法。

public String createUriString(){
    String basePath="http://example.com";
    String apiPath="api";
    String name="example_name";
    String channel="example_channel";
    BigDecimal code = BigDecimal.valueOf(100500);
    boolean isCreated= true;
    MultiValueMap<String,String> params = new LinkedMultiValueMap<>();
    params.set("name",name);
    params.set("channel",channel);
    params.set("code",code.toString());
    params.set("isCreated",String.valueOf(isCreated));
    UriComponents uriComponents = UriComponentsBuilder
        .fromHttpUrl(basePath)
        .path(apiPath)
        .queryParams(params)
            .build();
    return uriComponents.toUriString();
}

http://example.com/apiname=example_name&channel=example_channel&code=100500&iscreated=true
也可以使用queryparam方法。更简单。

public String createUriString(){
    String basePath="http://example.com";
    String apiPath="api";
    String name="example_name";
    String channel="example_channel";
    BigDecimal code = BigDecimal.valueOf(100500);
    boolean isCreated= true;
    UriComponents uriComponents = UriComponentsBuilder
            .fromHttpUrl(basePath)
            .path(apiPath)
            .queryParam("name",name)
            .queryParam("channel", channel)
            .queryParam("code", code)
            .queryParam("isCreated", isCreated)
            .build();
    return uriComponents.toUriString();
}

此代码的结果与前面的示例类似。
p、 我找不到getqueryparams(map)方法。我们可能有不同版本的SpringBoot。

相关问题