好长时间没有写学习小结了,最近宁正好看了小马哥的微服务系列之《Spring Boot》系列,颇有收获,并且公司也布置一个课题就是关于Spring中的REST API调用。于是乎回归本行,再次稍微讲讲这几天的学习与总结。其中借鉴了小马哥的一些思想也希望和大家分享出来一起学习一起讨论,如果有讲的不对或者讲的不好的地方请大家一定要加我微信gcl18360939450并备注本文标题。总之话不多说,今天就来看看Spring中的REST API调用。
首先,学习Spring中的REST就必须明白什么是REST。
一.定义
百度百科对REST进行了英文补全----Representational State Transfer,根据字母意思大致就是具有表达性质的状态传输。他是Roy Thomas Fieding在一篇博士论文中提出的一种软件架构风格。相对应地还有SOAP,WSDL等等。
明白这点,其实REST(也可以叫做Restful)就是一种软件架构的风格之后,那么他相对于SOAP,WSDL又有哪些异同?
二.架构属性
a.性能:
性能上属于轻量级架构(支持XML,HTML,JSON),因为JSON在数据级别上最为轻量级,因此REST架构主要使用JSON进行数据交互
b.可伸缩性
c.统一接口:
uri的命名的需要见知意,并于对应的资源相对应。若是uri的定义过于复杂或者过于随意则是一种反REST的表现
d.简化性
e.组建(可修改/通讯可见/可以移植)
三.架构约束
a.c/s架构方式
b.无状态:
服务端客户端不是一直保持联通
c.可缓存:(请求头中的标签,来设置缓存;cookie等等)
d.分层系统(MVC分层结构)
e.按需代码
f.同意接口
以上作为REST的核心便是--统一接口了,同意接口的实现分别可以从1.资源识别,资源操作,自描述信息(包括请求头中的相关信息,超媒体(HATEOAS),以下详细说明:
五.统一接口
a资源识别,是web层中暴露给互联网之中的,跟上面一致,资源需要按照一定的规律不可以反REST
b.资源操作:
Http verbs:GET ,PUT ,POST ,DELETE
其中 GET,PUT,DELETE是密等的,POST是非密等。所谓密等就是表单是否重复创立于多次提交问题。
c.自描述
1.Content-type
2.MIME-Type
3.MEDIA Type:application/javascript. text/(html/xml/json)
f:HATEOAS(超媒体)
接下来,就是Spring中的REST的应用
6.Spring 中的REST
核心接口(注意,下面的接口都是适用于任何形式的请求)
1.定义相关
@Controller
@RestController
2.映射相关
@RequestMapping
@PathVariable
3.请求相关
@RequestParam
@RequestHeader
@CookieValue
RequestEntity
4.响应相关(间上图)
@ResponseBody(RestController = ResponseBody+Controller且确定返回头)
ResponseEntity(不确定返回头)
5.Json
6.xml
通过对核心API的调用,完成对接口的统一和规范,这也是REST的主要特点。
讲了这么多,REST和核心在于Controller层对请求的接受与相应,其中包括不同的数据格式以及不同的请求头等等,总之,现在的软件架构越来越趋向于REST方式来调用API,我写的不好的地方或者不正确的地方都欢迎网友大大们来指正。写了这么多,最好洗洗睡吧。