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. 项目地址

    本项目传送门:spring-boot-RESTful

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

Spring Boot 教程 (3) - RESTful的更多相关文章

  1. Spring Boot教程(二十二)使用Swagger2构建强大的RESTful API文档(1)

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  2. 程序员DD 《Spring boot教程系列》补充

    最近在跟着程序员DD的Spring boot教程系列学习Spring boot,由于年代原因,Spring boot已经发生了一些变化,所以在这里进行一些补充. 补充的知识大多来自评论区,百度,Sta ...

  3. Spring Boot Hello World (restful接口)例子

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. Spring Boot实战:Restful API的构建

    上一篇文章讲解了通过Spring boot与JdbcTemplate.JPA和MyBatis的集成,实现对数据库的访问.今天主要给大家分享一下如何通过Spring boot向前端返回数据. 在现在的开 ...

  5. SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务

    一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...

  6. Spring Boot教程(十六)属性配置文件详解(1)

    相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...

  7. Spring Boot教程(二十三)使用Swagger2构建强大的RESTful API文档(2)

    添加文档内容 在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,而描述主要来源于函数等命名产生,对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容.如下所示,我们通 ...

  8. 使用 Spring Boot Actuator 构建 RESTful Web 应用

    Spring Boot Actuator 是 Spring Boot 的一个子项目.通过它,可以很轻易地为应用提供多种生产级服务.本教程中,你将通过构建一个应用来学习如何添加这些服务. 1. 你需要构 ...

  9. Spring Boot 教程 (4) - swagger-ui

    Spring Boot 教程 - swagger-ui 1. 什么是Swagger? Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到 ...

随机推荐

  1. Netty随记之ChannelInboundHandlerAdapter、SimpleChannelInboundHandler

    ChannelInboundHandlerAdapter ChannelInboundHandlerAdapter是ChannelInboundHandler的一个简单实现,默认情况下不会做任何处理, ...

  2. 让pomelo可以获取到反向代理websockets的真实用户IP

    /node_modules/pomelo/lib/connectors/hybridsocket.js 找到 var Socket = function(id, socket) { 给remoteAd ...

  3. vue 跳转并传参,实现数据实时更新

    原文链接:点我 比如我现在在页面A跳转到页面B,A中的router-link :to={path:’B’,params:{id:’5’}} 求助:在页面B中的mounted生命周期函数中使用this. ...

  4. pycharm安装与破解

    安装即教程地址: https://www.jianshu.com/p/355a6920116f 转载文章,资源失效可用这个链接下载: 链接:https://pan.baidu.com/s/1kBb3s ...

  5. 经过踩坑,搭建成功的Appium自动化测试环境

    因为最近本人准备搞app自动化,所以就搭建环境过程记录下来(主要踩过好几个坑) 期间有点烦躁,后面调整了下心态还是成功弄好了. 一.Appium环境搭建准备软件 所需要到的软件如下: 1.安装JDK1 ...

  6. 你应该知道的Vue高级特性

    本文使用的Vue版本:2.6.10 Vue为我们提供了很多高级特性,学习和掌握它们有助于提高你的代码水平. 一.watch进阶 从我们刚开始学习Vue的时候,对于侦听属性,都是简单地如下面一般使用: ...

  7. Spring官网阅读(十四)Spring中的BeanWrapper及类型转换

    文章目录 接口定义 继承关系 接口功能 1.PropertyEditorRegistry(属性编辑器注册器) 接口定义 PropertyEditor 概念 Spring中对PropertyEditor ...

  8. [C#]基础——注意事项

    1. 静态类必须直接继承Object 2. 静态类不能实现接口,不能继承其他类(除了Object) 3.静态类中不能有实体方法 4.实体类中可以有静态方法,使用同 静态类 5.readonly属性可以 ...

  9. NLTK数据包下载频繁报错——解决方法

    问题描述:Nltk下载数据包,安装频繁报错. import nltk nltk.download() 运行上面的代码,下载nltk的数据包.但是在下载过程中因为各种问题导致网络传输失败,下载不成功. ...

  10. python工业互联网应用实战1—SQL与ORM

    从sql到ORM应该说也是编程体系逐步演化的结果,通过类和对象更好的组织开个过程中遇到的各种业务问题,面向对象的解耦和内聚作为一套有效的方法论,对于复杂的企业应用而言确实能够解决实践过程中很多问题. ...