@GET在Spring Restful Webservice中接受JSON输入?

时间:2015-07-15 01:57:57

标签: json spring web-services rest

我设计了一个控制器,它应该显示我在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"  
}

2 个答案:

答案 0 :(得分:0)

GET请求没有邮件正文。您只能使用URL传递参数。

示例:      www.exemple.com/toto?parameter1=myparameter1

您还可以使用RESTful样式网址。

更多信息: https://spring.io/guides/gs/rest-service/

答案 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/

相关问题