什么是RESTFUL?REST的请求方法有哪些,有什么区别?

这里是修真院前端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析前端知识/技能,本篇分享的是:

【什么是RESTFUL?REST的请求方法有哪些,有什么区别?】

1.背景介绍
restFul是符合rest架构风格的网络API接口,完全承认Http是用于标识资源。restFul URL是面向资源的,可以唯一标识和定位资源。 对于该URL标识的资源做何种操作是由Http方法决定的。 rest请求方法有4种,包括get,post,put,delete.分别对应获取资源,添加资源,更新资源及删除资源.

2.知识剖析
如何编写符合rest架构风格的restful?

1.URL中不可出现动词

2.URL能够唯一地标识单个或一类资源

3.通过Http动词去操作URL标识的资源(get(获取),pst(添加),put(更新),delete(删除))

错误写法示例

clipboard.png

错误写法

该网络API接口URL中使用了动词,并没有做到只标识和定位资源

正确写法示例

clipboard.png

正确写法

该网络API接口URL仅标识和定位资源,通过Http方法Post表明是一个添加资源的处理器

REST请求方法解析

GET

get方法在Rest中主要用于获取资源,能够发送参数,不过有限制,且参数都会以?开头的形 式附加在URL尾部

clipboard.png

get参数

因为参数信息会完全暴露,因此是不推荐发送重要信息的。get方法产生一个tcp数据报一次发送完毕。

规范的get方法处理器应该是幂等的,也就是说对一个资源不论发送多少次get请求都不会更改数据或造成破坏。

应该在编写处理器的时候保证幂等从而提高安全性

POST

post方法在Rest请求中主要用于添加资源,参数信息存放在请求报文的消息体中相对安全,且可发送较大信息

post因为参数信息存在方消息体中相对安全,一般用于发送重要数据,且post产生两个tcp数据报需要发送两次完成

对于get和post的本质区别该博客写的非常好

规范化的post方法处理器是不幂等的,因此如果用户重复对一个资源进行post应该在处理器中做出限制和处理保证对数据不造成破坏和更改 从而提高安全性.get和post本质区别

PUT

put方法在Rest中主要用于更新资源,因为大多数浏览器不支持put和delete,会自动将put和delete请求转化为get和post. 因此为了使用put和delete方法,需要以post发送请求,在表单中使用隐藏域发送真正的请求。

put方法的参数是同post一样是存放在消息中的,同样具有安全性,可发送较大信息。

put方法是幂等的,对同一URL资源做出的同一数据的任意次put请求其对数据的改变都是一致的。比如更新/student/2的name值为bobdylan

不论提交该请求多少次,/student/2资源的name值会于提交一次请求无异

DELETE

Delete在Rest请求中主要用于删除资源,因为大多数浏览器不支持put和delete,会自动将put和delete请求转化为get和post.因此为了使用put和delete方法,需要以post发送请求,在表单中使用隐藏域发送真正的请求。

Delete方法的参数同post一样存放在消息体中,具有安全性,可发送较大信息 Delete方法是幂等的,不论对同一个资源进行多少次delete请求都不会破坏数据

3.常见问题
浏览器自动转化PUT和DELETE为GET和POST,容器找不到对应的处理器报错

rest风格规定URL标识资源,使用Http的四个方法对资源进行操作。但在浏览器发送请求时会自动将put和post 转化为get和post.这样rest风格就成了鸡肋,且发送请求会报错说找不到get方法或post方法。

为什么不支持delete和put方法是因为html4官方在表单中仅支持get和post方法,忽略了Put和Delete以及其他Http方法. 尽管在html5和一些新的浏览器支持所有的http方法,但不可能所有用户都使用最新的浏览器。

4.解决方案
1.首先第一种是前端人员通过ajax发送,因为不懂前端所以不详述

2.通过在form表单中使用隐藏域在服务器端配置过滤器来发送真实请求

3.使用Spring的sf:form表单来提交

第一种就不详述了

第二种在编码实战中进行演示

第三种方法因为资料不全,是在Spring实战这本书中看到的,自己尝试实现失败了。见Spring实战这本书305页

5.编码实战
PPT地址:PPT

视频地址:视频

6.扩展思考
7.参考文献
参考一: get和post的本质区别

参考二: SpringMvc中发送put和Delete请求

参考三: Spring实战第11章305页《提交RestFul表单》

8.更多讨论

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
REST(Representational State Transfer)是一种软件架构风格,用于构建分布式系统。它是一种基于网络的设计原则,强调在系统中以资源为中心进行通信和交互。RESTful是符合REST原则的应用程序设计风格。 RESTful的主要原则包括: 1. 资源:在RESTful架构中,所有的数据和功能都被视为资源。每个资源都有一个唯一的标识符(URI)来访问和操作。 2. 统一接口:RESTful架构使用统一的接口风格,包括使用HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作,以及使用HTTP状态码来表示请求的结果。 3. 无状态:RESTful架构是无状态的,即服务器不会存储客户端的状态信息。每个请求都应该包含足够的信息来处理请求,服务器不需要维护会话状态。 4. 可缓存:RESTful架构支持对响应进行缓存,以提高性能和减少网络流量。 REST/RESTful的用途包括: 1. Web服务:RESTful架构被广泛用于构建Web服务,通过HTTP协议进行通信,并使用JSON、XML等格式来表示数据。 2. API设计:将应用程序功能以RESTful的方式暴露为API接口,使得其他应用程序可以通过HTTP请求进行访问和集成。 3. 分布式系统:RESTful架构适用于构建分布式系统,通过资源的唯一标识符和HTTP方法进行通信和交互。 4. 轻量级通信:由于RESTful使用HTTP协议作为通信协议,它具有轻量级、简单和易于实现的特点,适用于各种场景的通信需求。 总而言之,REST/RESTful是一种基于网络的软件架构风格,强调以资源为中心进行通信和交互。它具有简单、可扩展和可维护的特点,适用于构建Web服务、API设计以及分布式系统等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值