概念
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
功能
- 资源 : 互联网所有的事物都可以被抽象为资源
- 资源操作 : 使用Post、Delete、Put、Get,使用不同的方法对资源进行操作
- 分别对应 : 添加、删除、修改、查询。
传统的资源操作方式 : 通过不同的参数来实现不同的效果,方法单一(post 和 get)
- http://127.0.0.1/item/queryItem.action?id=1 查询,Get
- http://127.0.0.1/item/saveItem.action 新增,Post
- http://127.0.0.1/item/updateItem.action 更新,Post
- http://127.0.0.1/item/deleteItem.action?id=1 删除,Get或Post
RestFul操作资源 : 可以通过不同的请求方式,来实现不同的效果! 如下 : 虽然请求的地址一样,但是功能可以不同!
- http://127.0.0.1/item/1 查询,Get
- http://127.0.0.1/item 新增,Post
- http://127.0.0.1/item/ 更新,Put
- http://127.0.0.1/item/1 删除,Delete
如果代码写成这样(原来的方式)那么我们在浏览器上想要调用这个test方法,就必须在url后面用问号传入参数a和b以及他们各自的值
@Controller public class RestFulController {
// 传统的Url : localhost:8080/add?a=1&b=2 @RequestMapping("add") public String test ( int a, int b, Model model){
int res = a + b; model.addAttribute("msg","结果为:" + res); return "hello"; } }
讯享网
假设a的值为1 b的值为2(Url就会是这个样子:localhost:8080/add?a=1&b=2)

讯享网
而使用RestFul风格来实现的话只需要传入参数的值就可以实现调用test方法(一定程度上简化了Url)
代码没有太多改动,只是在参数的前面加上了一个PathVariable注解并让方法参数的值绑定到了对应的Url模板变量上
讯享网@Controller public class RestFulController {
// RestFul风格的Url : localhost:8080/add/1/2 @RequestMapping("add/{a}/{b}") // 在SpringMVC中使用@PatchVariable注解,让方法参数的值对应绑定到Url模板变量上 public String test1 (@PathVariable int a,@PathVariable int b, Model model){
int res = a + b; model.addAttribute("msg","结果为:" + res); return "hello"; } }
只传入了对应的两个参数的值,就能够成功调用类中的test方法。:(Url是这个样子: localhost:8008/add/1/2)


RestFul除了能够改变Url,我们上面还说过可以让Url地址通过不同的请求方式来实现不同的效果,操作起来也很简单。
首先我们先来看一下如何使用注解来改变请求方式
// 用method来约束请求方式为Get(当然默认的请求方式也是Get)方式或其他。 @RequestMapping(name="add/{a}/{b}",method = RequestMethod.GET)``` // 也可以直接使用@GetMapping注解来指定,这样的话代码会显得更为简洁,效果是一样的 @GetMapping("add/{a}/{b}") // 除了Get请求方式其他的请求方式也都有对应的衍生注解,比如: @PostMapping @DeleteMapping @PutMapping // ....
了解之后我们动手具体实现一下,这边我们再写一个testA方法,让之前的test的方法提交方式为Post,testA的提交方式为Get。
讯享网@Controller public class RestFulController {
@PostMapping("add/{a}/{b}") public String test (@PathVariable int a,@PathVariable int b, Model model){
int res = a + b; model.addAttribute("msg","结果为:" + res); return "hello"; } @GetMapping("add/{a}/{b}") public String testA (@PathVariable int a,@PathVariable int b, Model model){
int res = a + b; model.addAttribute("msg","结果A为:" + res); return "hello"; } }
打开浏览器输入 localhost:8080/add/1/2

发现走的方法是testA而不是test(因为默认的提交方式是Get,而test方法的提交方式为Post)
我们再写一个a.jsp文件,让它走post提交方式(a和b的值分别为1和2已经写死)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/add/1/2" method="post">
<input type="submit">
</form>
</body>
</html>
我们在浏览器**问a.jsp

提交之后可以看到它走的是test方法,也就是说他的提交方式为Post,那么有意思的就来了。他的Url地址和我们之前走的testA方法是一样的(Get提交方式)

到这里我们就完成了同一个Url地址,走两种不同的提交方式,实现了Url的复用,也就是我们前面提到的这一点。

那么,到这里RestFul的初步认识就结束了,各位感兴趣的话可以自己尝试一下,玩出点新花样~~~~

原图p站地址 : https://www.pixiv.net/artworks/
画师id : 高崎律@お仕事募集
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45361.html