Spring mvc SpringREST客户端,如何序列化客户端请求中的对象
我有一个客户Spring mvc SpringREST客户端,如何序列化客户端请求中的对象,spring-mvc,jakarta-ee,resttemplate,rest-client,Spring Mvc,Jakarta Ee,Resttemplate,Rest Client,我有一个客户 RestTemplate restTemplate = new RestTemplate(); Result r = restTemplate.getForObject("http://localhost:8080/test?key1=value1",Result.class); 我不想手动将“key1=value1”附加到url中,是否可以使用类似这样的类 class Dto { private String key1; public void setKey1(Stri
RestTemplate restTemplate = new RestTemplate();
Result r = restTemplate.getForObject("http://localhost:8080/test?key1=value1",Result.class);
我不想手动将“key1=value1”附加到url中,是否可以使用类似这样的类
class Dto {
private String key1;
public void setKey1(String key1) {this.key1=key1}
并让spring自动序列化dto对象,因此调用如下
Result r = restTemplate.getForObject("http://localhost:8080/test", Result.class, dto);
restTemplate中有这样的方法,但我无法让它工作,在服务器端我接收到空对象。
我想我在DTO上遗漏了一些注释。
在服务器上我有
@RequestMapping(value = "/test")
@ResponseBody
public DTO test(DTO p) {
p.setName("received");
return p;
}
请给我一些建议 考虑到您将所有端点作为常量保存在文件中,您应该在url中使用占位符。在您的情况下,一个URL端点将是
http://localhost:8080/test?key1={0}&anotherParam={1}
restTemplate.getForObject("http://localhost:8080/test", Result.class, "keyVal","anotherKeyVal");
由于最后一个参数的类型为varArgs,它将接受您想要发送的任意多个值,但顺序与您在种子URL中定义键的顺序相同。把它们放在那个位置是由API自己负责的。
[更新]
查看服务器端代码,似乎希望在DTO对象中接收值。为此,您需要使用messageConverter(JSON或XML)发布(并使端点成为POST)数据。这样,您的对象将由messageConverter进行封送和解封。我使用的是restTemplate.getForObject(“,dto”);但在服务器端,我接收到空dto,这是我的问题。在中回答