REST风格

Web相关

Posted by YD Blog on November 3, 2022

REST风格

简介

  • REST(Representational State Transfer),表现形式状态转换
    • 传统风格资源描述形式:
      • http://localhost/user/getById?id=1
      • http://localhost/user/saveUser
    • REST风格描述形式:
      • http://localhost/user/1
      • http://localhost/user
  • 优点:
    • 隐藏了资源的访问行为,无法通过地址得知对资源是何种操作
    • 书写简化
  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作:
路径 操作 行为动作
http://localhost/users 查询全部用户信息 GET(查询)
http://localhost/users/1 查询指定用户信息 GET(查询)
http://localhost/users 添加用户信息 POST(新增/保存)
http://localhost/users 修改用户信息 PUT(修改/更新)
http://localhost/users/1 删除用户信息 DELETE(删除)

实际上行为动作就是请求方式,通过路径和请求方式就可以确定操作。

注意:

上述行为是约定方式,约定不是规范,可以打破,所以称REST风格而不是REST规范。
描述模块名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源。

  • 根据REST风格对资源进行访问称为RESTful

如何使用

在类前添加@RequestMapping指定公共前缀。

在方法前的@RequestMapping注解中指定method属性为RequestMethod.方式即可。

同时可以在参数前添加@PathVariable表示此参数从路径获取,并在@RequestMapping注解的value中设置{变量名}的占位符,即示例中/1

关于几个注解的区别

  • @RequestBody@RequestParam以及@PathVariable
  • 区别:
    • @RequestParam用于接收url地址传参或表单传参
    • @RequestBody用于接收json数据
    • @PathVariable用于接收路径参数,使用{参数名}描述路径参数
  • 应用:
    • 后期开发中,发送请求参数超过1小时,以json格式为主,@RequestBody应用较广
    • 如果发送非json数据,选用@RequestParam接收请求参数
    • 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收参数

快速开发

  • 类前的@Controller@ResponseBody可以简写为@RestController
  • 方法前的@RequestMapping(method = RequestMethod.POST)可以简写为@PostMapping,其他请求格式则以此类推,可以在属性中指定@PathVariable的参数。