【问题标题】:Spring RestTemplate PUT with parametersSpring RestTemplate PUT 带参数
【发布时间】:2021-08-12 12:58:05
【问题描述】:

我想在 spring boot 上调用另一个 spring boot

我看了很多文章

Spring RestTemplate GET with parameters

Spring RestTemplate

还有很多……

我目前可以使用的临时方法

    final String uri = "http://127.0.0.1:8888/key";
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(uri)
            .queryParam("id", "1234")
            .queryParam("model", "model")
            .queryParam("name", "name")
            .queryParam("description", "description")
            .queryParam("status", 0)
            .queryParam("mode", 1)
            .queryParam("creationDate", "2021/05/24 12:34:56")
            .queryParam("updatedDate", "2021/05/24 12:34:56");

    HttpEntity<?> entity = new HttpEntity<>(headers);
    HttpEntity<String> response = restTemplate.exchange(
            builder.toUriString(),
            HttpMethod.PUT,
            entity,
            String.class);

我希望能够直接使用类而不是慢慢输入所有参数

public class DataDto {
    private String id;
    private String model;
    private String name;
    private String description;
    private int status;
    private int mode;
    private String creationDate;
    private String updatedDate;

...
}

如何一次将整个类用作参数?

我尝试了很多类似的东西,但我的服务器上没有参数:

    logger.info("getId:" + dataDto.getId());
    final String uri = "http://127.0.0.1:8888/key";
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.put(uri, DataDto.class, dataDto);

【问题讨论】:

  • 你想专门用它作为查询参数还是对你没关系?
  • 我想把thymeleaf表单数据发回我的spring boot server,在那里进行判断和存储
  • 我要返回整个类的所有变量

标签: java spring spring-boot api rest


【解决方案1】:

试试下面的方法。 覆盖 DataDto 的 toString() 方法

    @Override
    public String toString() {
    return String.format("id=%s&" +
            "model=%s&" +
            "name=%s&" +
            "description=%s&" +
            "status=%s&" +
            "mode=%s&" +
            "creationDate=%s&" +
            "updatedDate=%s", id, model, name, description, status, mode, 
             creationDate, updatedDate);
    }

如下所示形成 URL,

    final String uri = String.format("%s?%s", "http://127.0.0.1:8888/key", dataDto.toString())

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 2016-01-19
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多