概述:
REST是一种规范,强调http以资源为中心,规范了uri风格;
服务端将内部资源发布给REST服务器,客户端通过url来定位这些资源并通过http协议访问;
举例:
GET http://localhost:8080/users 获取所有用户
GET http://localhost:8080/user/1 获取id为1的用户
PUT http://localhost:8080/user/1 更新id=1的用户
DELETE http://localhost:8080/user/1 删除id=1的用户
POST http://localhost:8080/user 创建用户
通常需要提供REST框架,让其实现前后端分离架构,一般采用SSM、springboot框架实现REST风格的软件架构;
REST架构的实现
实现REST风格框架,我们需要首先确定返回的JSON响应结构是统一的,也就是说,每个REST请求将返回相同结构的JSON响应结构
为了在框架中映射以上JSON响应结构,我们需要编写一个Response类与其对应(暂时没用到,这里省略好多字……)
前后台数据流转
流转1:浏览器发送方携带json格式参数的http请求,服务端需要将json参数转化为java对象;
流转2:反之,发送的请求在服务器端获取到java对象格式的返回数据,需要将数据转化为json格式数据,然后在浏览器渲染;
这两种都涉及到json格式与java对象之间的转化问题;
springMVC框架为我们提供了这类转化特性,
流转1需要在Controller方法参数前加上@RequestBody注解 即可;
流转2 需要在方法上加上@ResponseBody即可
服务器端代码举例:
@ResponseBody // 将返回值由java对象类型转化为json格式
public User addUser(@RequestBody User user) {
// 将接收到的HTTP消息转化为Java对象
userService.addUser(user);
log.debug("添加用户 :" + user);
return user;
}
注解简化
由于经常使用到@ResponseBody,spring框架将@ResponseBody与@Controller进行了融合,可以使用@RestController取代,写在Controller类上方;
代码举例:
@RestController //一劳永逸的注解
@RequestMapping("/users")
public class UserController {
public void addUser()
{
}
}
普通请求与rest请求对比:
普通请求:
http://localhost:8990/order/selectOne?id=1
rest请求:
http://localhost:8990/order/selectOne/1