REST风格开发

发布时间 2023-10-09 09:10:03作者: Melo70000

Rest简介

REST (Representional State Transfer) 表现形式状态转换(资源描述风格)

但是REST风格描述不太清楚,可能会有歧义,故有:

路径 + 请求方式 =资源的访问行为

请求方式springmvc支持8种,常用的为上述4种

注:上述行为是约定方式,约定不是规格,可以打破(建议)

​ 描述模块的名称通常使用复数,表示此类资源,而不是单个资源

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

RESTful入门案例

假设表现层UserController中有一个保存user和根据id删除user的方法

@RequestMapping("/save")
@Responsebody
public String save(@RequestBody User user){
    System.out.println("user save..." + user);
    return "{'module';'user save'}"
}
@RequestMapping("/delete")
@Responsebody
public String delete(Integer id){
    System.out.println("user delete..." + id);
    return "{'module';'user delete'}"
}

REST风格书写

@RequestMapping(value = "/users",method = RequestMethod.POST)
@Responsebody
public String save(@RequestBody User user){
    System.out.println("user save...");
    return "{'module';'user save'}"
}
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@Responsebody
public String delete(@PathVariable Integer id){
    System.out.println("user delete..." + id);
    return "{'module';'user delete'}"
}

上述案例主要有两部分:

  1. 设定http动作,常用四种GET,PUT,POST.DELETE
  2. 设定请求参数
    1. 路径上面加入
    2. 方法参数里面加入@PathVariable注解,表示参数从路径上获取,名称需对应
  • @RequestBody 请求体参数 用于接收json
  • @RequestParam 接收url地址传参和表单传参
  • @PathVariable 用于接收路径参数

REST快速开发

@Controller
public class UserController(){
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @Responsebody
    public String save(@RequestBody User user){
        System.out.println("user save..." + user);
        return "{'module';'user save'}"
    }

    @RequestMapping(value = "/users",method = RequestMethod.PUT)
    @Responsebody
    public String update(@RequestBody User user){
        System.out.println("user update..."+ user);
        return "{'module';'user update'}"
    }
}

我们发现

@RequestMapping(value = "/users",method = RequestMethod.POST)
@Responsebody

两个方法都使用了非常相似的注解,只有Http的方法不同

所以我们可以对其进行简化:

@RestController
@RequestMapping("/users")
public class UserController(){
    @RequestMapping(method = RequestMethod.POST)
    public String save(@RequestBody User user){
        System.out.println("user save..." + user);
        return "{'module';'user save'}"
    }

    @RequestMapping(method = RequestMethod.PUT)
    public String update(@RequestBody User user){
        System.out.println("user update..."+ user);
        return "{'module';'user update'}"
    }
}

总结一下,REST风格就是一种资源描述风格,这种风格的主要围绕着资源展开,包括对资源的操作。其中操作在spring中有8种,我们常用的有4种。