什么是RESTful(RESTfule风格又是啥)

访客4年前黑客工具539

什么是RESTful(RESTfule风格又是啥)小编带大家一起来了解一下

什么是RESTful(RESTfule风格又是啥)

什么是REST?
REST(英文:Representational State Transfer,简称REST,意思:表述性状态转换,描述了一个架构样式的 *** 系统,比如web应用)。

它是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件,它主要用于客户端和服务端交互类的软件。基于这个风格设计的软件可以更简介,更有层次,更易于实现缓存等机制。

它本身并没有什么使用性,其核心价值在于如何设计出符合REST风格的 *** 接口。

什么是RESTful?
REST:指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。

RESTful的特性
资源(Resources): *** 上的一个实体,或者说是 *** 上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特性的URI。要获取这个资源,访问它的URI就可以,因此URI即为每一个资源的独一无二的识别符。

表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、 *** ON格式表现,甚至可以采用二进制格式。

状态转换(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转换”(State Transfer)。而这种转换是建立在表现层之上的,所以就是“表现层状态转换”。具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。他们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。

如何设计RESTful应用程序的API?
路径设计:数据库设计完毕之后,基本上就可以确定有哪些资源要进行操作,相对应的路径也可以设计出来。

动词设计:也就是针对资源的具体操作类型,有HTTP动词表示,常用的HTTP动词如下:POST、DELETE、PUT、GET

RESTful示例
/account/1 HTTP GET:得到id=1的account
/account/1 HTTP DELETE:删除id=1的account
/account/1 HTTP PUT:更新id=1的account
SpringMvc对RESTful的支持
RESTful的URL路径变量
URL-PATTERN:设置为/,方便拦截RESTful请求。

@PathVariable:可以解析出来URL中的模板变量({id}/{name})

URL:http://localhost:8080/s *** /cyb/item/1/chenyanbin


Controller层:
@RequestMapping("{id}/{name}")
@ResponseBody
public Item queryItemById(@PathVariable Integer id,@PathVariable String name){
.............
}
如图


RESTful的CRUD
@RequestMapping:通过设置method属性的CRUD,可以将同一个URL映射到不同的HandlerMethod *** 上。

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解同@RequestMapping注解的method属性设置。

RESTful的资源表述
RESTful服务中一个重要的特性就是一种资源可以有多种表现形式,在SpringMvc中可以使用ContentNegotiatingManager这个内容协商管理器来实现这种方式。

内容协商的方式有三种
扩展名,比如.json表示我要 *** ON格式数据、.xml表示我要xml格式数据
请求参数:默认是“format”
请求头设置Accept参数,比如设置Accept为application/json表示要 *** ON格式数据
现在一般RESTful风格响应的数据一般都是 *** ON格式,所以一般也不使用内容协商管理器,直接使用@ResponseBody注解将数据按照 *** ON格式返回

静态资源访问<mvc:resources>#
在Springmvc.xml文件中,使用mvc:resources标签,具体如下:

<!-- 当DispatcherServlet配置为/来拦截请求的时候,需要配置静态资源的访问映射 -->
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
....
....
....
....
如图

什么是RESTful?RESTfule风格又是啥?
SpringMvc会把mapping映射到ResourceHttpRequestHandler,这样静态资源在经过DispatcherServlet转发时就可以找到对应的Handler了。

相关文章

ins黑客(ins黑科技)

ins黑客(ins黑科技)

本文导读目录: 1、世界上的知名黑客有哪些? 2、谁知道黑客历史文化的英文介绍吗 3、韩国有哪些流行的社交软件? 4、吴世勋直播时收到私生电话,自曝换号码也会被泄露,为何明星隐私容易泄露?...

破解别人微信密码的神器是什么

其实大部分的情侣要想发展出来还是从异性之间做朋友开始的,所以刚开始做异性朋友的时候大部分的人都是通过各种各样的社交软件进行聊天,关于软件聊天的时候,其实我们是没有办法确认这个人是否是唯一和我们聊天的那...

建筑师将马德里埃尔南德斯住宅内的成年人与儿

Daniel Valle建筑师在马德里这座砂岩覆盖的住宅的屋顶上创造了一个三角形的凹口,有助于视觉上区分客户使用的部分和孩子所占的部分。西班牙建筑师丹尼尔·瓦勒( Daniel Valle)和他的团队...

偷偷查亲戚全部的QQ聊天记录

“乘轻舟 千帆竞”!11月3日-4日,由云从科技与谊和科技联合举办的首届智慧物联“千帆计划”合作伙伴大会在上海成功举行。 为顺应万物互联的智能时代发展,来自上海、山东、安徽等地的40多家智慧物联...

黑客攻击支付宝的提示(黑客攻防支付宝视频)

黑客攻击支付宝的提示(黑客攻防支付宝视频)

支付宝如何与黑客硬刚,负重“钱”行? 1、马云每次都在说,支付宝做的事情很简单,只是把银行没有做好的事情做好了,他还略带自嘲的说,如果银行能够做到支付宝的事情,他可以完全的把支付宝的项目无条件的还给银...

如何随时监控别人微信聊天(怎么实时同步微信聊天记录)

怎样随时随地监管他人微信聊天(如何即时同歩微信聊天纪录) 在我们回望我们的爱史时,大家一直有隐约的痛楚。这类缺憾不取决于大家沒有向争执和冷暴力妥协,都不取决于大家让女生在那一天等了两个小时。 在感...