Spring Boot REST
- 资源(Resources)
所谓资源,就是网络上一个实体,或者是网络上一个具体信息。他可以是一段文本,一张图片,一种服务,总之是一个具体的实体。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或者独一无二的识别符。 - 表现层 (Representation)
资源是一种信息实体,它可以有多种表现形式。把资源具体呈现出来的形式称为它的表现层。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML、JSON,甚至可以采用二进制格式。 - 状态转化(State Transfer)
访问一个网站,就代表了客户端和服务器的一个互动过程。这个过程中,势必设计数据和状态的改变。
HTTP协议是一个无状态互联网通信协议,这意味着所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生状态转化。而这种转化是建立在表现层之上的,所以就是表现层状态转化。
客户端用到的手段只能是HTTP协议。HTTP协议里有5个常用的表示操作方式的动词:GET、POST、PUT、DELETE、PATCH。它们分别对应5种基本操作:
GET 用来获取资源
POST 用来新建资源
PUT 用来更新资源
DELETE 用来删除资源
PATCH 用来更新资源的部分属性
URI 是同一资源标识符,URL是统一资源定位符
REST 风格的构架
现在流行的各种Web框架,包括Spring Boot 都支持 REST 开发,REST 并非是一种技术或者规范,而是一种构架风格。它包括了REST构架中如何标识资源,如何标识操作接口以及操作版本,如何标识操作的结果等,主要内容:
- 使用 api 作为 Web 上下文
http://localhost/api - 增加版本标识
http://localhost/api/v1.1 - 标识资源
http://localhost/api/v1.1/user REST 中的HTTP Method
GET 用来获取资源
POST 用来新建资源
PUT 用来更新资源
DELETE 用来删除资源
PATCH 用来更新资源的部分属性在业务系统中,删除往往并不是指的物理删除,而是逻辑删除,资源通常仍然在数据库中,只是状态设置为删除状态
REST 中的 HTTP Status
服务器向客户端返回 HTTP Status 以表示操作是否成功
1、200 OK,用户请求成功。
2、400 错误的请求
3、404 NOT Found 用户发出请求针对的资源不存在
4、405 用来访问本页面的 HTTP Method 不被允许
5、406 表示无法使用请求内容特性来响应请求的资源
6、500 服务器内部错误
Spring Boot REST的更多相关文章
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- 【微框架】之一:从零开始,轻松搞定SpringCloud微框架系列--开山篇(spring boot 小demo)
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...
- 玩转spring boot——开篇
很久没写博客了,而这一转眼就是7年.这段时间并不是我没学习东西,而是园友们的技术提高的非常快,这反而让我不知道该写些什么.我做程序已经有十几年之久了,可以说是彻彻底底的“程序老炮”,至于技术怎么样?我 ...
- 玩转spring boot——结合redis
一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口 ...
- 玩转spring boot——AOP与表单验证
AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...
- 玩转spring boot——结合JPA入门
参考官方例子:https://spring.io/guides/gs/accessing-data-jpa/ 接着上篇内容 一.小试牛刀 创建maven项目后,修改pom.xml文件 <proj ...
- 玩转spring boot——结合JPA事务
接着上篇 一.准备工作 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- 玩转spring boot——结合AngularJs和JDBC
参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...
- 玩转spring boot——结合jQuery和AngularJs
在上篇的基础上 准备工作: 修改pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- 玩转spring boot——MVC应用
如何快速搭建一个MCV程序? 参照spring官方例子:https://spring.io/guides/gs/serving-web-content/ 一.spring mvc结合thymeleaf ...
随机推荐
- [转]How can I list all foreign keys referencing a given table in SQL Server?
本文转自:https://stackoverflow.com/questions/483193/how-can-i-list-all-foreign-keys-referencing-a-given- ...
- MVC初级教程(二)
演示产品源码下载地址:http://www.jinhusns.com/Products/Download
- 基于win32的windows画板程序
功能设计如下: 1.Graphics菜单中可选择图形,支持Rectangle, Circle, Line,选择对应图形,则相应菜单项前面加上选中标志: 2.Options菜单中包含以下选项 a.Col ...
- C#跨窗体传值
果然C#的跨窗体传值比vb难得多,vb就定义一个全局变量就ok,但是C#还要考虑到命名空间的问题 frmMain要调用LoginUI的两个值,但是在此同时,frmMain又要引用LoginUI,所以说 ...
- python 查询数据库返回的数据类型
self.conn=MySQLdb.connect(host='localhost',port=3306, user='keystone', passwd='OptValley@4312', db=s ...
- 浅谈一致性哈希(My转)
一致性哈希(Consistent hashing)算法是由 MIT 的Karger 等人与1997年在一篇学术论文(<Consistent hashing and random trees: d ...
- CodeForces760A
A. Petr and a calendar time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
- Vue项目打包报错Failed to load resource: net::ERR_FILE_NOT_FOUND
webpack.prod.conf.js 中output添加参数publicPath:'./' 修改webpack.base.conf.js中: publicPath: process.env.NOD ...
- input文字垂直居中和按钮对齐问题,兼容IE8
1.盒子模型问题:请CSS重置 2.按钮不对齐:请浮动或者vertical-align:middle;然后计算宽高,使其对齐 : 3.IE8文本不居中:line-height属性 注意:IE8 ...
- react组件直接在document上添加事件
demo:比如组件里有个div写的框框,点击document body的背景色变红,点击div写的框框没效果 componentDidMount(){ document.onclick = this. ...