我设计了一个控制器,它应该显示我在JSON文件中指定的员工数据。
当我使用JSON数据执行POST请求时,它可以工作,但是当我尝试使用相同的参数执行GET请求时,它不起作用。你能解释一下原因吗?
GET可以执行json DATA吗?
// It works
@RequestMapping(value = EmpRestURIConstants.CREATE_EMP, method = RequestMethod.POST)
public @ResponseBody Employee createEmployee(@RequestBody Employee emp) {
logger.info("Start createEmployee.");
string Id = emp.getId();
System.out.prinltn(Id);// it showing value
return emp;
}
// It doesn't work
@RequestMapping(value = EmpRestURIConstants.CREATE_EMP, method = RequestMethod.GET)
public @ResponseBody Employee createEmployee(@RequestBody Employee emp) {
logger.info("Start createEmployee.");
string Id = emp.getId();
System.out.prinltn(Id); // it showing null
return emp;
}
// passing parameter.
{
"Id" :"SOMEID"
}
答案 0 :(得分:0)
GET请求没有邮件正文。您只能使用URL传递参数。
示例: www.exemple.com/toto?parameter1=myparameter1
您还可以使用RESTful样式网址。
答案 1 :(得分:0)
如果使用@RequestBody注释方法参数,Spring会将传入的HTTP请求主体(对于该方法的@RequestMapping中提到的URL)绑定到该参数。在这样做时,Spring会[在幕后]使用HTTP消息转换器将HTTP请求主体转换为域对象[反序列化请求主体到域对象],基于请求中的Accept头。
HTTP客户端[browsers]使用Accept标头告诉服务器他们将接受哪些内容类型。 服务器发送回响应,该响应将包括一个Content-Type标头,告诉客户端返回内容的内容类型实际上是什么。在POST或PUT请求的情况下,浏览器会在请求中发送数据,因此它们实际上也会发送内容类型。
提供者: http://websystique.com/springmvc/spring-mvc-requestbody-responsebody-example/