关于RESTful请求的问题

关于RESTful请求的问题

GET/POST/PUT/DELETE这四种请求分别只能严格对应查询、新增、修改、删除吗?前两种请求与前期课程中

讲到的web请求完全不同吗?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学,你好!非常抱歉为你带来了不好的体验!下面把你的两个疑问再整理一下:

1、关于编码的问题

虽然都是CharacterEncodingFilter类,但其实是不同的。在web部分是我们自定义的过滤器,而这里使用的是Spring中的过滤器。通过查看这个过滤器的源码,发现会对POST、PUT和DELETE请求进行了处理,并没有对GET请求进行处理,这也是因为现在基本使用Tomcat 8以上版本,因此没有对GET请求进行处理

http://img1.sycdn.imooc.com//climg/5e63324309bbc9eb12630225.jpg

2、关于请求的问题

浏览器表单只能发送GET和POST请求。但是除了浏览器表单,还可以通过ajax或者HttpClient等技术进行请求发送,这些都是可以发送四种请求的。

另外springMVC中,可以在web.xml中增加如下过滤器的配置,

在form表单中,增加隐藏域,设置为put或delete,如:

http://img1.sycdn.imooc.com//climg/5e634e75095f589507040223.jpghttp://img1.sycdn.imooc.com//climg/5e634f0e09aef8cd05550108.jpg

经过过滤器的会将post请求转换为put或delete请求。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿满 2020-03-06 19:14:55

同学你好,Restful是一种编码风格,确实Get Post Put Delete 对应 查询 新增 修改 删除。但要注意的是,这是纯粹的理论设计,是最理想的情况.。目前以Chrome为代表的浏览器,从设计之初就只支持get/post的两种请求,这是w3c的标准规定的,Chrome只是进行了实现。这也是为什么我们在学习Servlet时候,只去处理doGet/doPost的原因。如果我们的请求是来自于标准浏览器那只用对get/post进行处理。
但是,Ajax就不一样了。 Ajax的核心对象是XmlHttpRequest,这东西并不是W3C规定的标准, 同时XmlHttpRequest对象是允许发送Get/Post/Put/Delete请求的,所以在SpringMVC中我们创建了与之对应的处理办法。通过浏览器发送标准Http请求收到W3C的规定制约,只能发送get/post, 而Ajax则四种都可以 ,看起来都是在网页中提交的,其根本是完全不同的。

Restful最大的好处是只需要返回数据,因此可以用在任何客户端通信. 如果我们的客户端是Web页面,那就是用ajax  , 如果是java 可以使用HttpClient或者OkHttp发送 ,如果是安卓ios也提供了发送对应Http请求的方法, 这些都是可以发送四种不同的方法的。

Servlet中除了doGet/doPost还有doPut/doDelete,只是在讲解Servlet的部分,因为浏览器不能发送put/delete 所以只需要实现doGet/doPost 。

总结一下: 浏览器和其他工具(Ajax/HttpClient/Okhttp...) 发送的http请求的格式都是完全相同的,只是浏览器表单只能发送get/post , 但只要不是浏览器提交的, 其他工具都可以发送四种请求。

祝:学习愉快~

好帮手慕阿满 2020-03-06 17:37:26

同学你好,

1、所有的请求都需要考虑编码问题,在web.xml中,有如下配置,会拦截所有的请求,对其进行编码设置。如:

http://img1.sycdn.imooc.com//climg/5e62196509e26dc307010289.jpg

2、第二个问题也有回答,RESTful不只能使用ajax来开发,还可以使用其他的方式,比如说form表单。

祝:学习愉快~

  • 提问者 慕沐8221787 #1
    前面课程不是说CharacterEncodingFilter只对POST请求解决中文乱码问题吗?怎么现在又说对所有的请求类型都有效呢?而且,前面课程还讲到低于8.0版本的Tomcat,需要解决GET请求的中文乱码必须在server.xml文件中设置,你这不是前后矛盾吗?到底你们谁谁的是对的呢?另外,form表单能提交PUT和DELETE请求吗?前面课程不是说也不行吗?????
    2020-03-06 17:54:34
  • 提问者 慕沐8221787 #2
    我提交的问题看不懂么?这样的教辅太差了!
    2020-03-06 20:16:27
好帮手慕阿满 2020-03-06 10:46:52

同学你好,在RESTful风格的开发中 ,GET,POST,PUT,DELETE四种请求分别对应查询、新增、修改、删除。get和post请求和之前使用的一样,只是RESTful风格中,get和post对应的是查询和新增操作。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕沐8221787 #1
    PUT,DELETE这两种请求不用考虑中文乱码问题吗?还有RESTful只能使用ajax来开发吗?
    2020-03-06 11:35:47
  • 好帮手慕阿满 回复 提问者 慕沐8221787 #2
    同学你好,PUT,DELETE也需要考虑中文乱码问题。RESTful可以使用其他的方式,比如form表单提交数据。祝:学习愉快~
    2020-03-06 14:02:40
  • 提问者 慕沐8221787 #3
    请详细解答一下,而且第二个问题并没有解答,希望认真对待学员提问,一个好的平台,是需要用 心 维护的!
    2020-03-06 14:48:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师