大家好,我是IT修真院上海分院第3期学员,一枚正直善良的java程序员,今天给大家分享一下,修真院java任务中的一个知识点:什么是RESTFUL?REST的请求方法有哪些,有什么区别?

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

如何编写符合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请求都不会破坏数据

常见问题

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

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

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

解决方案

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

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

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

第一种就不详述了

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

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

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

技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:16318412,或者你可以直接点击此链接:http://www.jnshu.com/login/1/16318412

restful可以转发么_什么是RESTFUL?REST的请求方法有哪些,有什么区别?相关推荐

  1. c++ post请求_前端工程师进阶:网络请求方法详解,GET和POST的区别

    1 前言 最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 get 和 post 的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的 ...

  2. SpringCloud工作笔记048---RESTful API 中 HTTP 状态码的定义_以及把RESTFul版本号_放到http协议header中_以及RestFul设计时的两个误区

    JAVA技术交流QQ群:170933152 ------------------------- RESTful架构有一些典型的设计误区. 最常见的一种设计错误,就是URI包含动词.因为"资源 ...

  3. SpringMVC3----@Controller注解、RestFul风格的讲解和应用、SpringMVC的接受请求参数、网页跳转方式和数据回显、乱码问题

    目录 7 Controller类的写法 7.1 继承Controller接口 7.2 一个简单通过@Controller注解实现的程序. 7.3 @RequestMapping 8 RestFul风格 ...

  4. Restful API是什么?初探Restful API,传统接口写法与Restful API接口写法区别

    Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API: 目录 ...

  5. RESTful API常用的HTTP请求方法

    GET:获取资源 例如图片.css文件.js文件等,在RESTful API中,一般用来获取数据,例如列表,详情等.对应CRUD中的R,即查找操作. POST:传输实体主体 例如提交表单信息,在RES ...

  6. 05-Flutter移动电商实战-dio基础_引入和简单的Get请求

    05-Flutter移动电商实战-dio基础_引入和简单的Get请求 这篇开始我们学习Dart第三方Http请求库dio,这是国人开源的一个项目,也是国内用的最广泛的Dart Http请求库. 1.d ...

  7. 放在请求头目的_浅谈http的几种请求方法

    脑图 目前主流使用的 HTTP 协议的请求方法是比较固定的,并没有随着大版本的提升有过多改变. 按照 常用.非常用以及扩展可以分成上图中的 3 类.要彻底掌握这些 request methods,我们 ...

  8. cgi web 调用多次启动_简单说明CGI和动态请求是什么

    1. CGI是什么 CGI是common gateway interface的缩写,大家都译作通用网关接口,但很不幸,我们无法见名知意. 我们知道,web服务器所处理的内容都是静态的,要想处理动态内容 ...

  9. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...

    原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...

最新文章

  1. 规则引擎 drools_为什么要用规则引擎?
  2. Windows下32位汇编语言读取键盘输入单字符
  3. mysql数据库没有密码_MySQL用户数据库没有密码列-在OSX上安装MySQL
  4. 白硕 | 基于区块链的众包社区激励机制
  5. function函数嵌套 matlab_matlab – 当没有使用“end”时,一个.m文件中的多个函数是嵌套的还是本地的...
  6. 斯坦福 CS228 概率图模型中文讲义 六、变量消除
  7. 三菱PLC编程软件:GX WORKS2和GX WORKS3的区别
  8. Create VerifyCode by jsp of java
  9. php如何自动阅卷,智能评卷系统 自动阅卷软件
  10. STM32智能锁指纹锁密码锁WIFI远程开锁微信小程序临时密码源码PCBA方案
  11. SolarWinds盛邀技术专业人士参加第八届年度THWACKcamp虚拟IT活动
  12. matlab如何拟合方程,如何用MATLAB拟合曲线来求参数?
  13. CSS属性—居中对齐篇
  14. HDU 3954 Level up 2011 Alibaba Programming Contest 线段树
  15. 利用Python实现FGO自动战斗脚本,再也不用爆肝啦~
  16. 商米机V2和V1内置打印机说明
  17. I tell you 如何下载文件
  18. SPH算法简介(四): Hello, SPH
  19. Kubernetes CSI 介绍及使用
  20. C语言/C++常见习题问答集锦(四十三) 之持之以恒

热门文章

  1. 如何查找基因在发表研究中的表达
  2. R语言sd函数计算数值标准差实战(Standard Deviation)
  3. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(改变分组的次序)实战(dot plot)
  4. R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放、hclust包层次聚类(创建距离矩阵、聚类、绘制树状图dendrogram,在树状图上绘制红色矩形框)
  5. R语言使用ggplot2包的快速可视化函数qplot绘制分组直方图(分组颜色设置)实战
  6. cufflinks基于dataframe数据绘制柱状图(bar plot)、堆叠柱状图(stacked bar plot)
  7. R可视化包ggplot2改变图例(Legend)的位置实战
  8. python代码实现堆排序
  9. cross-entropy(交叉熵)是什么?用了表征什么东西?
  10. Detail-Preserving Pooling in Deep Networks