Spring 4 Restful Service with bean

时间:2014-01-22 15:33:06

标签: rest spring-mvc spring-boot

我正在尝试创建一个简单的服务器/客户端应用程序,它可以将bean作为参数而不是String发送,但是下面的失败是我的代码

服务器

@Controller
public class GreetingController {

private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();

@RequestMapping(method=RequestMethod.POST,value="/returnGreet")
public @ResponseBody Greeting returnGreet(
        @RequestBody(required=false) Greeting greet) {
    if(greet == null)
          return new Greeting(counter.incrementAndGet(),
                  String.format(template, greet));
    else
        return new Greeting(0,"Testing");
}
}

客户

RestTemplate restTemplate = new RestTemplate();

    MultiValueMap<String,Greeting> greet = new LinkedMultiValueMap<String, Greeting>();
    greet.add("greet", new Greeting(0,"XOXO"));



    greeting = restTemplate.postForObject("http://localhost:8080/returnGreet",greet, Greeting.class,greet);
    System.out.println("Content:    " + greeting.getContent());
    System.out.println("Id:   " + greeting.getId() );

对于服务器端的对象问候,结果始终为null。

任何想法?

1 个答案:

答案 0 :(得分:0)

您没有正确使用RestTemplate。为什么要传递MultiValueMap作为要发送的实体?这不会按照服务器期望的方式进行序列化。

直接使用Greeting对象。

restTemplate.postForObject("http://localhost:8080/returnGreet", new Greeting(0, "XOXO"), Greeting.class);

此外,最后一个参数不是必需的,您没有任何URI变量。