
🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaweb
石可破也,而不可夺坚;丹可磨也,而不可夺赤。 
REST
- 一、REST简介
 - 1.1REST风格简介
 
- 二、RESTful入门案例
 - 2.1设定http请求动作(动词)
 - 2.2设定请求参数(路径变量)
 
- 三、RESTful快速开发
 - 3.1RestController注解
 - 3.2方法注解
 
- 总结
 
一、REST简介
- REST(Representational State Transfer),表现形式状态转换
 -  
  
- 传统风格资源描述形式
 
-  
    
http://localhost/user/getById?id=1
 -  
    
http://localhost/user/saveUser
 
 -  
  
- REST风格描述形式
 
-  
    
http://localhost/user/1
 -  
    
http://localhost/user
 
 - 优点: 
  
- 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
 - 书写简化
 
 
1.1REST风格简介
- 按照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。
 
二、RESTful入门案例
2.1设定http请求动作(动词)
@RequestMapping(value = "/users", method = RequestMethod.GET)
    @ResponseBody
    public String save() {
        System.out.println("use save...");
        return "'module':'user save'";
    }
//修改
    @RequestMapping(value = "/users", method = RequestMethod.PUT)
    @ResponseBody
    public String update(@RequestBody User user) {
        System.out.println("use update..." + user);
        return "'module':'user update'";
    }
 
2.2设定请求参数(路径变量)
//带参数
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable int id) {
        System.out.println("use delete..." + id);
        return "'module':'user delete'";
    }
 
- 名称:
@RequestMapping - 类型:方法注解
 - 位置:SpringMVC控制器方法定义上方
 - 作用:设置当前控制器方法请求访问路径
 - 范例:
 
 @RequestMapping(value = "/users", method = RequestMethod.GET)
    @ResponseBody
    public String save() {
        System.out.println("use save...");
        return "'module':'user save'";
    }
 
- 属性: 
  
-  
    
- value(默认):请求访问路径
 
 -  
    
- method:http请求动作,标准动作(GET/POST/PUT/DELETE)
 
 
 -  
    
 
- 名称:
@PathVariable - 类型:形参注解
 - 位置:SpringMVC控制器方法形参前面
 - 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名相同
 - 范例:
 
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable int id) {
        System.out.println("use delete..." + id);
        return "'module':'user delete'";
    }
 
- 区别: 
  
-  
    
@RequestParam用于接收url地址传参或表单传参
 -  
    
@ResponseBody用于接收json数据
 -  
    
@PathVariable用于接收路径参数,使用(参数名称)描述路径参数
 
 -  
    
 - 应用: 
  
-  
    
- 后期开发中,发送请求参数超过1个小时,以json格式为主, 
@ResponseBody应用较广 
 - 后期开发中,发送请求参数超过1个小时,以json格式为主, 
 -  
    
- 如果发送非json格式数据,选用 
@RequestParam接收请求参数 
 - 如果发送非json格式数据,选用 
 -  
    
- 采用RESTful进行开发,当参数数量较少时,例如一个,可以采用
@PathVariable接收请求路径变量,通常用于传递id值 
 - 采用RESTful进行开发,当参数数量较少时,例如一个,可以采用
 
 -  
    
 
三、RESTful快速开发
3.1RestController注解
- 名称:
@RestController - 类型:类注解
 - 位置:基于SpringMVC的RESTful开发控制器类定义上方
 - 作用:设置当前控制器为RESTful风格,等同于
@Controller和@ResponseBody两个注解组合功能 - 范例:
 
@RestController
@RequestMapping("/address")
public class BookController {
}
 
3.2方法注解
- 名称:
@GetMapping、@PostMapping、@DeleteMapping、@PutMapping - 类型:方法注解
 - 位置:基于SpringMVC的RESTful开发控制器方法定义上方
 - 作用:设置当前控制器方法请求路径与请求动作,每种对应一个请求动作,例如
@GetMapping对应GET请求 - 范例:
 
@RestController
@RequestMapping("/address")
public class BookController {
    @GetMapping
    public String save() {
        System.out.println("use save...");
        return "'module':'user save'";
    }
    @DeleteMapping
    public String delete() {
        System.out.println("use delete...");
        return "'module':'user delete'";
    }
    //修改
    @PutMapping
    public String update(@RequestBody Address address) {
        System.out.println("use update..." + address);
        return "'module':'user update'";
    }
    @GetMapping("{id}")
    public String getById(@PathVariable int id){
        System.out.println("address getById..." + id);
        return "'module':'address getById'";
    }
}
 
- value:默认访问路径
 
总结
通过这篇文章,基于SpringMVC的RESTful快速开发就介绍到这里了,欢迎各位小伙伴点赞+关注!!!



















