spring mvc 3中的consumes,其实就是当请求的HTTP 头是何种格式的时候,进行应对,
比如请求为application/xml,application/json,下面看个例子:

@Controller
public class ExampleController {

@RequestMapping(value = "/test",
method = RequestMethod.POST,
consumes = "application/xml")
public ResponseEntity<String> processXml(
@RequestBody String requestBody){

return new ResponseEntity<String>(
"Handled application/xml request. Request body was: "
+ requestBody,
new HttpHeaders(),
HttpStatus.OK);
}

@RequestMapping(value = "/test",
method = RequestMethod.POST,
consumes = "application/json")
public ResponseEntity<String> processJson(
@RequestBody String requestBody){

return new ResponseEntity<String>(
"Handled application/json request. Request body was: "
+ requestBody,
new HttpHeaders(),
HttpStatus.OK);
}

}



那么可以用curl发起两个不同的请求,首先是xml的:



curl -i -X POST -H "Content-Type: application/xml" \


-d "<root><element>value</element></root>" \


​http://localhost:8080/springmvc/test ​

则输出:


HTTP/1.1 200 OK


Server: Apache-Coyote/1.1


Content-Type: text/plain;charset=ISO-8859-1


Content-Length: 87


Date: Sat, 16 Mar 2013 16:40:15 GMT



Handled application/xml request.


Request body was:


<root><element>value</element></root>



如果是json请求的:


curl -i -X POST -H "Content-Type: application/json" \


-d '{ "root": { "element": "value" } }' \


http://localhost:8080/springmvc/test



则输出:


HTTP/1.1 200 OK


Server: Apache-Coyote/1.1


Content-Type: text/plain;charset=ISO-8859-1


Content-Length: 85


Date: Sat, 16 Mar 2013 16:40:42 GMT



Handled application/json request.


Request body was:


{ "root": { "element": "value" } }