REST风格的请求

文章目录

  • 概述:
  • 举例:
  • REST架构的实现
  • 前后台数据流转
  • 注解简化
  • 普通请求与rest请求对比:
    • 普通请求:
    • rest请求:

概述:

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风格的请求_第1张图片

rest请求:

http://localhost:8990/order/selectOne/1
REST风格的请求_第2张图片

你可能感兴趣的:(前端,restful,java,spring,boot)