3、RestFull风格【URL】
RestFull设计风格
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
URL定义
资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
分别对应 添加、 删除、修改、查询。
传统方式操作资源
http://127.0.0.1/item/queryUser.action?id=1 查询,GET
http://127.0.0.1/item/saveUser.action 新增,POST
http://127.0.0.1/item/updateUser.action 更新,POST
http://127.0.0.1/item/deleteUser.action?id=1 删除,GET或POST
请求方式
可以通过 GET、 POST、 PUT、 PATCH、 DELETE 等方式对服务端的资源进行操作。
其中,GET 用于查询资源,POST 用于创建资源,PUT 用于更新服务端的资源的全部信息,PATCH 用于更新服务端的资源的部分信息,DELETE 用于删除服务端的资源。
这里使用“用户”的案例进行回顾通过 GET、 POST、 PUT、 PATCH、 DELETE 等方式对服务端的资源进行操作。
使用RestFull操作资源
【GET】 /users # 查询用户信息列表
【GET】 /users/1001 # 查看某个用户信息
【POST】 /users # 新建用户信息
【PUT】 /users/1001 # 更新用户信息(全部字段)
【PATCH】 /users/1001 # 更新用户信息(部分字段)
【DELETE】 /users/1001 # 删除用户信息
普通方式跟RestFull方式URL传参举例:
获取两个数相加的之和,对于普通的URL请求与RestFull请求的区别:
普通URL请求传参方式:
1 @RequestMapping("/rest") 2 public String RestFull(int a, int b, Model model) { 3 int sum = a + b; 4 model.addAttribute("msg", "结果为:" + sum); 5 return "hello"; 6 }
RestFull传参方式:
@PathVarable:表示路径变量
1 @RequestMapping("/rest/{a}/{b}") 2 public String RestFull(@PathVariable int a, @PathVariable int b, Model model) { 3 int sum = a + b; 4 model.addAttribute("msg", "结果为:" + sum); 5 return "hello"; 6 }
通过指定的提交方式去实现:
指定提交方式:(掌握)
@RequestMapping(value = "/rest/{a}/{b}",method = RequestMethod.GET)
等于上面的:
@RequestMapping("/rest/{a}/{b}")
或者也可以直接写成:
@GetMapping("/rest/{a}/{b}")
上面的三个注解的功能是一样的!
跟GetMapper一样的还有其他类似注解:
@GetMapping("/rest/{a}/{b}") @PostMapping("/rest/{a}/{b}") @DeleteMapping("/rest/{a}/{b}") @PutMapping("/rest/{a}/{b}") // ……