一、什么是URI
- 统一资源标识符,服务器上每一种资源,比如文档、图像、视频片段、程序都由一个通用资源标识符(Uniform Resource ldentifier,简称"URI")进行定位。
-
URI、URL、URN三者的关系是什么?
image.png
二、REST产生的背景
近年来移动互联网的发展,前端设备层出不穷(手机、平板、桌面电脑、其他专用设备...…),因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信,于是REST诞生了,它可以通过一套统一的接口为Web,iOS和Android提供服务。
三、什么是REST
- REST的概念
REST (Representational State Transfer,表述性状态转移)一词是由Roy Thomas Fielding在他2000年博士论文中提出的,定义了他对互联网软件的架构原则,所以我们可以说REST是一种架构风格。 - REST的原则
- 网络上的所有事物都被抽象为资源
- 每个资源都有一个唯一的资源标识符
- 同一个资源具有多种表现形式(xml,json等)
- 对资源的各种操作不会改变资源标识符
- 所有的操作都是无状态的
四、什么是RESTful
-
遵守了rest 原则的web服务,rest式的web服务是一种ROA(The Resource-OrientedArchitecture:面向资源的架构),RESTful架构一个核心概念是"资源"(Resource)
-
互联网中,客户端和服务端之间的互动传递的就只是资源的表述,我们上网的过程,就是调用资源的URI,获取它不同表现形式的过程。这种互动只能使用无状态协议HTTP,也就是说,服务端必须保存所有的状态,客户端可以使用HTTP的几个基本操作,包括GET(获取)、POST(创建)、PUT(更新)与DELETE(删除),使得服务端上的资源发生"状态转化"(StateTransfer),也就是所谓的“表述性状态转移”。
-
举例
举例1
举例2
五、RESTful的运用
- Spring Boot全面支持开发RESTful程序,通过不同的注解来支持前端的请求:
- @GetMapping,处理Get请求
- @PostMapping,处理Post请求
- @PutMapping,用于更新资源
- @DeleteMapping,处理删除请求
- @PatchMapping,用于更新部分资源
- Controller中的映射注解
- @PathVariable,用于接收url路径上的参数
- @ModelAttribute,用于直接接受url?后面的参数如url?id=123&name=456,然后直接转为Pojo
六、SpringBoot下进行RESTful的开发流程

一个例子:Spring Boot JPA RESTful后端项目的过程可以查看我写的另一篇文章
Spring Boot JPA 项目的创建并且根据数据库表生成类文件
七、Spring Data REST的介绍
-
Spring Data REST
- Spring Data REST 作为Spring Data项目的子集,开发者只需使用注解@RepositoryRestResource标记,就可以把整个Repository转换为HAL风格的REST 资源,目前已支持Spring Data JPA、Spring Data MongoDB、Spring DataNeo4j等等。
- @RepositoryRestResource标记,就可以把整个Repository转换为HAL风格的REST 资源,目前已支持Spring Data JPA、Spring Data MongoDB、Spring DataNeo4j等等。
- HAL (Hypertxt Application Language)是一个被广泛采用的超文本表达的规范。官方文档: https://www.springcloud.cc/spring-data-rest-zhcn.html
-
HAL规范示例
目前github提供的api就是这种风格。在返回结果中添加额外的信息(链接)之后,服务器端提供的表达可以帮助客户端更好的发现服务器端所支持的动作。 -
Spring Data REST的开发流程
Spring-Data-REST的开发流程
一个例子:Spring Boot JPA RESTful后端项目的过程可以查看我写的另一篇文章
Spring Data Rest 项目的开发流程
网友评论