SpringMVC学习09 :RestFul风格讲解

 

SpringMVC学习09 :RestFul风格讲解

  • RestFul风格:

    • 概念:

      • RestFul就是一个资源定位资源操作的风格,不是标准,也不是协议,只是一种风格

      • 基于这个风格的软件可以更简洁,更有层次,更易于实现缓存等机制;

      • RestFul风格:都是以 / 作为分隔符;

         

    • 功能:

      • 资源:互联网所有的事物都可以被抽象为资源;

      • 资源操作:使用POST,DELETE,PUT,GET,使用不同方法对资源进行操作;

      • 分别对应:新增,删除,修改,查询

         

  • 传统方式操作资源:

    • 通过不同的参数来实现不同的效果:方法单一:post和get

      http://127.0.0.1/admin/demo1.action?id=1 查询,GET
      http://127.0.0.1/admin/demo2.action 新增,POST
      http://127.0.0.1/admin/demo3.action 更新,POST
      http://127.0.0.1/admin/demo4.action?id=1 删除,GET/POST

 

 

  • 使用RestFul操作资源:

    • 可以通过不同的请求方式来实现不同的效果:如下:请求地址一样,但是功能可以不同

    • 大型网站都是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

 

  • 测试:

    • 原来方式测试类:

      @Controller
      public class RestFulController {

         @RequestMapping("/add")
         public String test1(int a ,int b , Model model){
             //前端访问:可以直接传参数:http://localhost:8080/add?a=1&b=2
             int res=a+b;
             model.addAttribute("msg","结果为:"+res);
             return "hello";
        }
      }

       

    • RestFul方式测试:

      • 在SpringMVC中可以使用@PathVariable注解,让方法参数的值对应绑定到一个URL模板变量上;

      • RestFul方式:http://localhost:8080/add/1/4

      @Controller
      public class RestFulController {
         //int类型
         @RequestMapping("/add/{a}/{b}")
         public String test1(@PathVariable int a ,@PathVariable int b , Model model){
             //RestFul:http://localhost:8080/add/a/b
             //@PathVariable :路径变量,通过它就可以取值了
             int res=a+b;
             model.addAttribute("msg","结果为:"+res);
             return "hello";
        }
      }
    • 思考:使用路径变量的好处?

      • 简洁:访问路径简洁;

      • 高效:RestFul支持缓存;

      • 安全:原来的方式,参数直接暴漏;

         

 

  • 使用Method属性指定请求类型:

    • 用于约束请求的类型,可以收窄请求范围,指定请求谓词的类型如:GET,POST,PUT,DELETE等;

    • 测试:

      • 浏览器默认的请求方式是GET,如果我们显式定义的不一致,就会报错405;

      • 【重点】:method方法的值一定要加 { }

      @RequestMapping(value = "/add1/{a}/{str}",method = {RequestMethod.DELETE})
      public String test(@PathVariable int a ,@PathVariable String str , Model model){
         //RestFul:http://localhost:8080/add/a/b
         //@PathVariable :路径变量,通过它就可以取值了
         String res=a+str;
         model.addAttribute("msg","结果为:"+res);
         return "hello";
      }
    • 总结:

      • SpringMVC的@RequestMapping注解能够处理HTTP请求的方法,比如GET , PUT , POST , DELETE以及PATCH等;

      • 所有的地址栏请求默认都会是HTTP GET类型的;

      • 方法级别的注解变体有:组合注解

        @GetMapping
        @PostMapping
        @PutMapping
        @DeleteMapping
        @PatchMapping

        例子:
        @GetMapping("/add1/{a}/{b}")=@RequestMapping(value = "/add1/{a}/{str}",method = {RequestMethod.GET})
      • @GetMapping是一个组合注解,平时使用的会比较多!

       

 

 

 

 

posted @   gzs1024  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示