- 被翻译成为“表现层状态转换” 有两个名词:表现层和状态,什么东西需要他们两个呢?那就是资源。于是就有三个名词:表现层,状态,资源
- 资源:可以是一个角色,用户和商品,是具体存在的某个事物
- 表现层:是表现资源的具体方式,可以用jsp,json,或者excel等展现出来
- 状态:一个资源并不是一成不变的,它的状态包括创建 修改 删除和访问等
REST风格的约定
- 每个URI代表一个独立的资源,因为URI是名词,所以在URI中不能出现动词。
- 客户端和服务器端相互传递资源,而服务器端会以某种形式展示,如:html,json等
- 客户端可以通过http的动作来修改资源的状态。
每个访问资源的URI都可以说是REST风格的一个端点,它代表 *** 作某个资源。在http存在且常见的主要有7种:GET POST PUT PATCH DELETE HEAD OPTIONS,而实际的开发的动作主要有4种:GET POST PUT DELETE。
- GET:从服务器获取资源
- POST:提交资源信息,服务器创建对应的资源
- PUT:提交属性让服务器端对现有的资源进行修改。注:使用该请求时建议提交该资源的全部属性
主要用于标注控制器的映射方法,意思为将方法返回的结果,转变为JSON数据集展示给请求者
REST相应设计1xx 相关信息
2xx *** 作成功
3xx 重定向
4xx 客户端错误
5xx 服务器错误
使用 HTTP 的状态码
客户端的每一次请求,服务器都必须给出回应。回应包括 HTTP 状态码和数据两部分。
五大类状态码,总共100多种,覆盖了绝大部分可能遇到的情况。每一种状态码都有约定的解释,客户端只需查看状态码,就可以判断出发生了什么情况。API 不需要1xx状态码。
我们可以使用注解@ResponseStatus注解来返回相应状态码,当然我们就光使用状态码远远不够,还需要些其他的提示信息,来告诉请求者出现错误的原因是什么。Spring_MVC提供了ResponseEntity
- status:HttpStatus类型,表示响应码 注:这个是枚举类。
- headers:HTTP响应头,可以支持自定义消息。
- body:响应体,HTTP请求响应正文。
/**
*
* @param name 角色姓名 因为这是测试 这个参数毫无意义
* @return 角色
*/
@GetMapping("/info/{name}")
public ResponseEntity test(@PathVariable(value = "name" ,required = false) String name){
//响应体
User body=new User(name,"这是地址");
//响应头
HttpHeaders headers=new HttpHeaders();
if(true){
headers.add("success","成功");
headers.add("message","信息成功");
}else {
headers.add("success","失败");
headers.add("message","这个信息"+name+"失败");
}
// 创建ResponseEntity
return new ResponseEntity(body,headers, HttpStatus.OK);
}
这里有个小问题:header的信息显示不了中文。有大神看到的话帮忙回复我一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)