使用ResponseEntiry编写更符合restful风格的代码
- 先放一张SpringMVC的原理图:
一、ResponseEntity介绍
-
ResponseEntity是一个类属于org.springframework.http,从导包记录可以看出:
import org.springframework.http.ResponseEntity;
-
ResponseEntity 表示整个HTTP响应:状态码,响应头和响应体。因此,我们可以使用它来完全配置HTTP响应。
-
ResponseEntity是一种泛型类型。因此,我们可以使用任何类型作为响应主体。
二、ResponseEntity常用方法
1、只响应:状态码,不响应数据,如insert、update、delete操作时:
//方式一,使用ResponseEntiry的静态方法
return ResponseEntity.status(HttpStatus.BAD_REQUEST);
//方式二,使用ResponseEntiry的静态方法
return ResponseEntity.status(400);
//方式三,使用ResponseEntity的构造函数,通过数字状态码解析
return new ResponseEntity<>(HttpStatus.resolve(400));
//方式四,使用ResponseEntity的构造函数,通过枚举类型获取
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
以下状态码获取都可以通过这两种方式获得。(数字状态码解析、枚举类型获取)
2、只响应:数据
//使用ResponseEntiry的静态方法,默认状态码200,pageinfo是分页数据
return ResponseEntity.ok(pageInfo);
3、响应:数据 和 状态码
//使用ResponseEntity的构造函数
return new ResponseEntity<>(pageInfo,HttpStatus.resolve(200));
4、响应:状态码 和 头信息
//创建响应头对象,并添加头信息
HttpHeaders headers = new HttpHeaders();
headers.add("Custom-Header", "foo");
//使用ResponseEntity的构造函数
return new ResponseEntity<>(headers,HttpStatus.resolve(200));
5、响应:状态码 、数据 和 头信息
- 方式一
//创建响应头对象,并添加头信息 HttpHeaders headers = new HttpHeaders(); headers.add("Custom-Header", "foo"); //使用ResponseEntity的构造函数 return new ResponseEntity<>(pageInfo,headers,HttpStatus.resolve(200));
- 方式二
//创建响应头对象,并添加头信息
HttpHeaders headers = new HttpHeaders();
headers.add("Custom-Header", "foo");
//使用ResponseEntiry的静态方法,默认状态码200
return ResponseEntity.ok().header("Custom-Header", "001").body(pageInfo);
三、HttpStatus状态码
-
HttpStaus是一个枚举类,包含了所有的状态码信息
public enum HttpStatus
-
常用状态码对应表:其他的自行去HttpStatus枚举中查看
枚举属性 状态码 CONTINUE 100 OK 200 CREATED 201 NO_CONTENT 204 PARTIAL_CONTENT 206 MOVED_PERMANENTLY 301 FOUND 302 NOT_MODIFIED 304 BAD_REQUEST 400 UNAUTHORIZED 401 FORBIDDEN 403 NOT_FOUND 404 INTERNAL_SERVER_ERROR 500 SERVICE_UNAVAILABLE 503