天天看點

spring mvc 3中的consumes

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.