Spring Boot 教程 - RESTful

1. RESTful风格

1.1 简介与特点

RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTful适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

RESTful特点包括:

1、每一个URI代表1种资源;

2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源 (也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源(PATCH则比较少用到);

3、通过操作资源的表现形式来操作资源;

4、资源的表现形式是XML或者HTML;

5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

1.2 RESTful架构

RESTful架构是对MVC架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful架构中,浏览器使用POST,DELETE,PUT和GET四种请求方式分别对指定的URL资源进行增删改查操作。因此,RESTful是通过URI实现对资源的管理及访问,具有扩展性强、结构清晰的特点。

RESTful架构将服务器分成前端服务器和后端服务器两部分,前端服务器为用户提供无模型的视图;后端服务器为前端服务器提供接口。浏览器向前端服务器请求视图,通过视图中包含的AJAX函数发起接口请求获取模型。

项目开发引入RESTful架构,利于团队并行开发。在RESTful架构中,将多数HTTP请求转移到前端服务器上,降低服务器的负荷,使视图获取后端模型失败也能呈现。但RESTful架构却不适用于所有的项目,当项目比较小时无需使用RESTful架构,项目变得更加复杂。所以要根据项目的实际情况评估是否使用RESTful架构,在如今这种架构也是越来越流行的。接下来带领大家展示一下RESTful风格的调用。

2 RESTful开发

2.1 常见的RESTful风格调用

  • GET:请求从服务器获取特定资源。举个例子:GET /student(获取所有学生)。

    	/**
         * GET :请求从服务器获取特定资源。举个例子:GET /student(获取所有学生)
         * @return List<Student>
         */
        @GetMapping("/student")
        public List<Student> student() {
            return studentService.findAll();
        }
    
  • GET:请求从服务器获取特定资源。举个例子:GET /student/1(获取id为1学生)。

    	/**
         * GET :请求从服务器获取特定资源。举个例子:GET /student/1(获取id为1学生)
         * @param id
         * @return Student
         */
        @GetMapping("/student/{id}")
        public Student student(@PathVariable("id") Long id) {
            return studentService.findOne(id);
        }
    
  • POST:在服务器上创建一个新的资源。举个例子:POST /student(添加学生)。

    	/**
         * POST :在服务器上创建一个新的资源。举个例子:POST /student(添加学生)
         * @param student
         */
        @PostMapping("/student")
        public void student(@RequestBody Student student) {
            studentService.add(student);
        }
    
  • PUT:更新服务器上的资源(客户端提供更新后的资源)。举个例子:PUT /student/1(更新学号为 1 的学生的所有信息)。

    	/**
         * PUT :更新服务器上的资源(客户端提供更新后的资源)。举个例子:PUT /student/1(更新学号为 1 的学生的所有信息)
         * @param id
         */
        @PutMapping("/student/{id}")
        public void updateById(@PathVariable("id") Long id, Student student) {
            studentService.updateAll(id,student);
        }
    
  • DELETE:从服务器删除特定的资源。举个例子:DELETE /student/1(删除学号为 1 的学生)。

    	/**
         * DELETE :从服务器删除特定的资源。举个例子:DELETE /student/1(删除学号为 1 的学生)
         * @param id
         */
        @DeleteMapping("/student/{id}")
        public void deleteById(@PathVariable("id") Long id) {
            studentService.delete(id);
        }
    

    常用的主要就是这些请求方式,其他的请求方式都用的非常的少,但是我在代码里也有写,有兴趣的可以去我的Github看看代码,Github连接地址在博客的末尾。

3. 项目地址

本项目传送门:

此教程会一直更新下去,觉得博主写的可以的话,关注一下,也可以更方便下次来学习。


posted @ 2020-05-23 21:33  Butterfly-Tri  阅读(279)  评论(0编辑  收藏  举报