RESTful是目前非常流行的一种互联网软件架构。REST(Representational State Transfer,表述性状态转移)一词是由Roy Thomas Fielding在他2000年博士论文中提出的,定义了他对互联网软件的架构原则,如果一个架构符合REST原则,则称它为RESTful架构。
一、REST接口简介
REST通过URL定位资源(Resource),用HTTP的请求方式表示操作。
- 看URL知道要什么(URL表示资源)
- 看HTTP Method知道干什么(通过动作完成资源操作)
- 看statusCode知道结果怎么样
资源可以自描述(URI),REST是一种风格,而不是一种具体实现或协议,HTTP是目前RSET最广泛应用的实例。
A、Resource
RESTful架构一个核心概念是「资源」(Resource)。从RESTful的角度看,网络里的任何东西都是资源,它可以是一段文本、一张图片、一首歌曲、一种服务等,每个资源都对应一个特定的 URI(统一资源定位符),并用它进行标示,访问这个URI就可以获得这个资源。
- 代表具体实体的信息
- 存储在服务端
- 通过URI(Uniorm Resource Identifier)指定
http://httpd.apache.org/docs-project/#report
|----------------URL----------------|--URN--|
|--------------------URI--------------------|
B、HTTP Method
互联网中,客户端和服务端之间的互动传递的就只是资源的表述,上网的过程,就是调用资源的URI,获取它不同表现形式的过程。
客户端可以使用HTTP的几个基本操作,包括GET(获取)、POST(创建)、PUT(更新)与 DELETE(删除),使得服务端上的资源发生状态转化(State Transfer),也就是所谓的表述性状态转移。
- GET -> Read
- POST -> Create
- PUT -> Update(变更后的完整资源)
- PATCH -> Update(部分更新)
- DELETC -> Delete
有些客户端只能使用GET和POST,POST可以用于模拟PUT、PATCH、DELETE。客户端发出的HTTP请求,要加上X-HTTP-Method-Override属性,告诉服务器应该使用哪一个动词,覆盖POST方法。
C、REST设计原则
- 无状态(客户端请求包含完整信息,保证信息唯一性、完整性;服务器不用额外保存状态,使得分布式、高并发容易处理和维护);
- 支持缓存(减少数据传输,降低网络开销);
- URI不包含动词,动词应该包含在HTTP协议中。
二、Spring Boot对RESTful的支持
A、常用注解
Spring Boot全面支持开发RESTful程序,通过不同的注解来支持前端的请求,除了经常使用的注解外,Spring Boot还提了一些组合注解。这些注解来帮助简化常用的