2025年初步认识什么是RestFul风格

初步认识什么是RestFul风格概念 Restful 就是一个资源定位及资源操作的风格 不是标准也不是协议 只是一种风格 基于这个风格设计的软件可以更简洁 更有层次 更易于实现缓存等机制 功能 资源 互联网所有的事物都可以被抽象为资源 资源操作 使用 Post Delete Put Get 使用不同的方法对资源进行操作

大家好,我是讯享网,很高兴认识大家。

概念

  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)
假设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 : 高崎律@お仕事募集


小讯
上一篇 2025-02-19 13:32
下一篇 2025-03-12 15:03

相关推荐

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