RequestMapping POST API问题?

时间:2016-04-01 05:05:41

标签: java spring rest

我无法确定我在这里做错了什么。我正在使用应用程序“Postman”向服务发送请求。该参数是一个非常简单的POJO,如下所示。当我尝试发送请求时,我得到一个响应:“服务器拒绝了此请求,因为请求实体所采用的方法所请求的资源不支持该格式”

用于请求的类:

 public class LoginAttempt {

        private String userName;
        private String password;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }
控制器中的

API:

@RequestMapping(value="/validate", method=RequestMethod.POST, produces="application/json") 
public boolean validateUser(@RequestBody LoginAttempt login) {
    System.out.println("Login attempt for user " + login.getUserName() + login.getPassword());
    return true;
}

2 个答案:

答案 0 :(得分:2)

FormHttpMessageConverter ,当内容类型为application / x-www-form-urlencoded时,用于@RequestBody注释参数不能绑定目标类,因为 @ModelAttribute 可以)。 因此,您需要@ModelAttribute而不是@RequestBody

使用@ModelAttribute注释而不是像这样的@RequestBody

     public boolean validateUser(@ModelAttribute LoginAttempt login) 

或者您可以创建一个单独的方法表单,使用适当的标题属性处理表单数据,如下所示:

    @RequestMapping(value="/validate", method=RequestMethod.POST, headers = "content-type=application/x-www-form-urlencoded" produces="application/json")

答案 1 :(得分:1)

尝试添加此bean:

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="prefixJson" value="false"/>
    <property name="supportedMediaTypes" value="application/json"/>
</bean>