天道酬勤

问题描述

基于Spring MVC实现REST风格的服务,如何指定返回时HTTP头的状态码。
例如:

@RequestMapping(value = "/entity", method = RequestMethod.POST)
public @ResponseBody Entity create() {
    Entity created = new Entity();
    return created;
}

以上代码返回的HTTP状态码为HttpStatus.OK(200),而根据规范应该返回HttpStatus.CREATED(201)。

解决方案

Spring MVC中可以通过注解(@ResponseStatus)和返回(ResponseEntity)两种方式来指定方法返回时HTTP的状态码。

@RequestMapping(value = "/entity", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody Entity create() {
    Entity created = new Entity();
    return created;
}

@RequestMapping(value = "/entity", method = RequestMethod.POST)
public ResponseEntity<Entity> create() {
    Entity created = new Entity();
    ResponseEntity<Entity> response = new ResponseEntity<>(created, HttpStatus.CREATED);
    return response;
}