Spring休息json发布空值

我有一个Spring休息端点来做一个简单的Hello应用程序。 它应该接受{“name”:“something”}并返回“Hello,something”。

我的控制器是:

@RestController
public class GreetingController { 

    private static final String template = "Hello, %s!";

    @RequestMapping(value="/greeting", method=RequestMethod.POST)
    public String greeting(Person person) {
        return String.format(template, person.getName());
    }

}

人:

public class Person {

    private String name;

    public Person() {
        this.name = "World";
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

当我向像这样的服务提出请求时

curl -X POST -d '{"name": "something"}' http://localhost:8081/testapp/greeting

我明白了

Hello, World!

看起来好像不是正确地将json反序列化到Person对象中。 它使用默认的构造函数,然后不设置名称。 我发现这个:如何在REST中创建POST请求来接受JSON输入? 所以我尝试在控制器上添加一个@RequestBody,但是会导致有关“内容类型”application / x-www-form-urlencoded; charset = UTF-8'不支持“的错误。 我在这里看到:内容类型'application / x-www-form-urlencoded; charset = UTF-8'不支持@RequestBody MultiValueMap,它建议删除@RequestBody

我曾尝试删除它不喜欢的默认构造函数。

这个问题涵盖了使用Spring MVC在发布JSON时返回null的空值REST webservice,但它建议添加@RequestBody,但与上面冲突...


您必须设置@RequestBody来告诉Spring应该如何设置您的person参数。

 public Greeting greeting(@RequestBody Person person) {
    return new Greeting(counter.incrementAndGet(), String.format(template, person.getName()));
} 

您必须使用@RequestMapping(value =“/ greeting”,method = RequestMethod.POST)设置' produce '

使用下面的代码

@RequestMapping(value="/greeting", method=RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
 public String greeting(Person person) {
        return String.format(template, person.getName());
    }
链接地址: http://www.djcxy.com/p/8527.html

上一篇: Spring rest json post null values

下一篇: Spring MVC Rest Controller @RequestBody Parsing