• REST风格


    目录

    概述

    REST访问格式(区分方式)

    REST风格-使用案例

    表现层代码(使用REST风格)

    代码解释

    代码的测试

     接收参数注解说明

    区别@RequestBody,@Requestparm和@PathVariable


    概述

    REST(Representational State Transfer) 表现形式状态转换

    REST其实就是资源访问路径的一种格式。也可以当成对资源访问路径的书写规范。

    之所以说是可以当成,其实REST并不称自己是一种规范而是风格,因为REST刚出来的时候,使用者还不习惯REST风格的写法, 到后来大家都觉得REST风格书写简便,大家都默默规定了这种书写形式。所有可以说是可以当成一种规范来看待。

    作用:根据REST规定的形式书写访问路径,书写更简单,访问信息更隐蔽。

    根据REST风格对资源进行访问称为RESTful  

    REST访问格式(区分方式)

    核心:按照REST风格访问资源时使用行为动作来区分对资源进行了何种操作。

     例如现在有book表作为资源,访问路径格式如下 :

    访问路径行为动作说明
    http://localhost/books GET(查询)查询全部图书信息
    http://localhost/books/1GET(查询)查询指定图书信息
    http://localhost/booksPOST(新增/保存)添加图书信息
    http://localhost/booksPUT(修改/更新)修改图书信息
    http://localhost/books/1DELETE(删除)删除指定图书信息

    说明:不用在意写法,格式就是按照行为动作来指定该路径想要实现的功能。我们可以在对应路径Servlet下实现对应功能。后面跟着的数字/参数,我们称为路径参数。Servlet接收参数时,只要声明在方法参数中,方法体引用即可。

    REST风格-使用案例

    案例只使用表现层作为测试。不关联业务层和数据层。

    表现层代码(使用REST风格)

    1. @RestController
    2. @RequestMapping(value = "/books",produces = "application/json; charset=utf-8" )
    3. public class BookController {
    4. @GetMapping()
    5. public String getAll(){
    6. System.out.println("getAll...");
    7. return "获取所有信息...";
    8. }
    9. @GetMapping("/{id}")
    10. public String selectById(@PathVariable int id){
    11. System.out.println("selectById..."+ id);
    12. return "根据id查询单个信息...";
    13. }
    14. @PostMapping()
    15. public String save(){
    16. System.out.println("save...");
    17. return "保存成功...";
    18. }
    19. @DeleteMapping("/{id}")
    20. public String delete(@PathVariable int id){
    21. System.out.println( id +"..delete.." );
    22. return "删除成功...";
    23. }
    24. }

    代码解释

    1.@RestController复合注释:结合和@ResponseBody和@Controller两个注释。@ResponseBody声明后可响应数据,@Controller声明为表现层加载bean。

    2.@RequestMapping注释:声明Servlet的访问路径,还可设置编码,解决乱码问题。

    3. @GetMapping、@PostMapping...看作行为动作,配合@RequestMapping,就可以知道访问路径想要做些什么了。

    4.值得注意的是:如果带有路径参数,则需要参考使用案例代码中的DeleteMapping("/{id}")方式书写,记得方法需要使用参数接收后使用路径参数,路径参数名和方法形参名要一致。

    5.如果需要使用路径参数,记得在参数写注解@PathVariable

    代码的测试

    我们如果使用浏览器直接访问,只能使用GET行为动作,不能满足测试要求,所以我们选择一款接口测试工具"PostMan"。可以模拟任意请求方式,符合代码测试需求。

    1.先将Tomcat跑起来

    2.PostMan接口测试 

    测试不带路径参数的GET 

    结果

     测试带路径参数的GET

     结果

     

    测试POST

     接收参数注解说明

    在上方案例可以看到,路径参数使用了注解@PathVariable,表示参数可以接收路径参数,但是如果接收的是url参数或是json数据的话,@PathVariable就不可用了。那应该用什么呢?

    区别@RequestBody,@Requestparm和@PathVariable

    1.@RequestBody用来接收json数据。

    2.@Requestparm用来接收url地址传参或表单传参。

    3.@PathVariable用来接收路径参数

    三种接收方式各有不同,最常用的是@RequestBody,因为前后端传参基本是以json的数据格式进行传输,如果使用非json数据传输,可以考虑使用@Requestparm,参数简单且较少,可以考虑使用路径参数,例如传ID值。

  • 相关阅读:
    学生选修课程管理系统c++
    java基于ssm+vue的高校会议预约系统 elementui
    老友记第二季5集背诵句
    leetcode_318 最大单词乘积
    JDBC详解
    Typora+MinIO+Python代码打造舒适协作环境
    MyBatisPlus(四、代码生成器)
    应用LLL算法解决背包问题
    8.15 Day41---Linux文件系统命令
    《Principles of Model Checking》Chapter 4 Regular Properties
  • 原文地址:https://blog.csdn.net/m0_60155232/article/details/127611582