什么是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(删除))
错误写法示例
错误写法
该网络API接口URL中使用了动词,并没有做到只标识和定位资源
正确写法示例
正确写法
该网络API接口URL仅标识和定位资源,通过Http方法Post表明是一个添加资源的处理器
REST请求方法解析
GET
get方法在Rest中主要用于获取资源,能够发送参数,不过有限制,且参数都会以?开头的形 式附加在URL尾部
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.更多讨论
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:15568671,或者你可以直接点击此链接:http://www.jnshu.com/login/1/...
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。
这里是技能树.IT修真院:http://www.jnshu.com,初学者转行到互联网行业的聚集地。"
欢迎加IT交流群565734203与大家一起讨论交流
什么是RESTFUL?REST的请求方法有哪些,有什么区别?的更多相关文章
- HTTP 两种基本请求方法 GET和 POST的区别
GET方法 1.GET交互方式是从服务器上获取数据,而并非修改数据,所以GET交互方式是安全的.就像数据库查询一样,从数据库查询数据,并不会影响数据库的数据信息,对数据库来说,也就是安全的.2.GET ...
- HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误
(来源:http://www.tuicool.com/articles/Ermmmyn) HTTP请求方法: 常用方法: Get\Post\Head (1)Get方法. 取回请求URL标志的任何信息, ...
- HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误 #Reprinted#
请求方法是请求一定的Web页面的程序或用于特定的URL. 可选用下列几种: GET: 请求指定的页面信息,并返回实体主体. HEAD: 只请求页面的首部. POST: 请求服务器接受所指定的文档作为对 ...
- 标准Http协议的六种请求方法详解
标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5.HEAD 6.Options 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
- HTTP协议的六种请求方法
抛砖引玉,聊下概念性的东西先: HTTP协议 (Hyper Text Transfer Protocol) HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件.图像.结果等,即是一个客 ...
- 浅谈http协议六种请求方法,get、head、put、delete、post、options区别
标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5.HEAD 6.Options 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
- 幂等性的含义和 HTTP请求方法的幂等性
幂等性的含义和 HTTP请求方法的幂等性 1.什么是幂等性 =============== 幂等性,英文是idempotent,读作[aɪ'dɛmpətənt]. 它的含义如下: “Methods c ...
- HTTP协议六种请求方法,get,head,put,delete,post有什么区别
标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5.HEAD 6.Options 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
- 解析HTTP协议六种请求方法
标准Http协议支持六种请求方法,即: 1,GET 2,HEAD 3,PUT 4,DELETE 5,POST 6,OPTIONS 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
随机推荐
- 关于LR的笔记
- python3中collections模块(转)
https://www.cnblogs.com/zhangxinqi/p/7921941.html
- 安装xpath helper方便进行爬虫
安装xpath helper方便进行爬虫 因为我使用的是edge浏览器,扩展商店搜索不到xpath-helper,但是我不甘心,取下载源扩展直接放在edge中试试 下载XPath helper的源码 ...
- VirtualBox 桥接模式
网桥网络配置 以下内容来自:http://www.jianshu.com/p/a4dbdb40b72b 特点 1.如果主机可以上网,虚拟机可以上网 2.虚拟机之间可以ping通 3.虚拟机可以ping ...
- TCC分布式事框架务详解
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下.很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用. 所以这篇文章,就用大白话+手工绘图,并结合一 ...
- 创建vue脚手架步骤
一.在cmd配置npm淘宝镜像 npm config set registry https://registry.npm.taobao.org 二.仅第一次执行安装,安装好后关掉cmd后再开,这个时候 ...
- 题解 CF17E 【Palisection】
卡空间PAM,2010没有PAM,所以都是马拉车 众所周知,PAM拥有十分优秀的时间复杂度,但空间复杂度lj得不行 但这题卡空间,所以得用到邻接链表PAM 先讲思路 题目要求相交的回文子串对,这很难做 ...
- 8、msyql性能分析工具
性能分析工具 1服务器优化的步骤 2查询系统参数 在MySQL中,可以使用 SHOW STATUS 语句查询一些MySQL数据库服务器的性能参数.执行频率 . SHOW STATUS语句语法如下: S ...
- 20192204 2019-2020-2 《Python程序设计》实验四报告
20192204 2019-2020-2 <Python程序设计>实验四报告 课程:<Python程序设计> 班级: 1922 姓名: 李龙威 学号:20192204 实验教师 ...
- rodert教你学FFmpeg实战这一篇就够了
rodert教你学FFmpeg实战这一篇就够了 建议收藏,以备查阅 pdf阅读版: 链接:https://pan.baidu.com/s/11kIaq5V6A_pFX3yVoTUvzA 提取码:jav ...