解释之前我们先基于Http协议,根据Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求,Url类请求包括但不限于GET、HEAD、OPTIONS、TRACE 等请求方法。Body类请求包括但不限于POST、PUSH、PATCH、DELETE 等请求方法。

在语义上来说,例如GET请求是查询或者获取服务端的资源的,POST请求是向服务器push数据或者创建资源的。其它同类请求方法多少都有点相同的含义,不过它们谁有谁该做的事,例如支持缓存,探测响应头和断点续传等。

Url类请求释义

对于Url类请求,客户端是不能通过body写出数据的,服务端拿到的body是空的。因此一般情况下,我们提供的HttpClient被Url类的请求getOutputStream()的时候会抛一个异常,而HttpServer接受到Url类的请求后getInputStream()的时候也会抛一个异常,这都是为了告诉调用者这是不合理的。这里的HttpClient和HttpServer不是特指某框架或者浏览器,而是个笼统的称呼。

因此Url类的请求想要提交参数,就把参数跟在url后边了,但是url一般是指向资源的,因此url后面跟的参数更多的是一种条件和要求(例如阿里云OSS处理图片时)。

做了一张url的图,辅助一下:

看完图应该知道了,其实我们称为参数的这一段整体上叫做Query,把它们拆开后组成键值对的形式又叫做Parameters,大多数情况下一个Key对应一个Value,当然是允许一个Key对应多个Values的。

Body类请求释义

Body类请求在语义和能力上来说应该是兼容Url类请求的,但是根据Http协议它们谁有谁该做的事。例如RESTful风格就是根据Http协议来提出的。

对于Body类请求,客户端可以通过body写出数据,服务端可以通过body接受数据。因此Body类请求能上传到服务端的数据比Url类请求的大的多。RFC2616没有规定url的最大长度,但是规定当服务器不能处理太长的url时就返回414状态码(Request-URI Too Long),因此几乎可以说URL不能直接传输Binary数据,除非ToString,例如Base64。

Body类请求除了可以把参数放到url中,也可以通过body发送数据。

例如当Content-Type是application/x-www-form-urlencoded时,客户端可以通过body发送键值对数据,例如key1=value1&key2=value2,这就是题主说的那种情况。

例如当Content-Type是application/json时,客户端可以通过body发送json字符串;如果是application/xml时可以发送xml字符串。

例如当Content-Type是application/octet-stream时,客户端可以通过body发送Binary数据,例如文件或者任何能转成流的数据。

例如当Content-Type是multipart/form-data时,客户端可以通过body发送一个表单。注:表单是有格式的,不像json和xml的格式,json和xml的格式是字符串排版格式,而表单的格式里面既有字符串又有换行还有Binary,估计还得一个段落才能说清楚,这里不再展开说。

总结答案

看完上面的内容基本可以明了题主的问题,同时Http里面的很多东西如果不按照某种规范来就需要服务端和客户端协定,也不是一定要这样做或者那样做。比如上面说到的Content-Type是application/octet-stream时你也可以发送一段json数据、xml数据或者text数据。

post请求改成body_Post 方法参数写在body中和写在url中有什么区别?相关推荐

  1. post请求改成body_post请求body格式

    在PostMan中用Post方式,Body有form-data,x-www-form-urlencoded,raw,binary四种. 其中raw又分以下7种. 现在来区分一下: form-data ...

  2. 如何把get请求改成post

    get参数2000字符以内,超过就会报请求参数校验失败. 所以要把get改成post 1.后台 @RequestMapping(value = "/file_F_save", me ...

  3. post请求改成body_如何使用BODY快速发送POST请求

    我正在尝试使用Alamofire快速发布尸体的发布请求. 我的json主体看起来像: { "IdQuiz" : 102, "IdUser" : "io ...

  4. java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数

    在Spring MVC中,很容易将请求参数绑定到处理请求的方法参数. 我只是使用@RequestParameter("name"). 但是我可以对request属性做同样的事情吗? ...

  5. 佳能 c3000 系统设置改语言,win7如何更改语言 win7系统中将电脑语言改成英文的方法步骤介绍...

    今年evad3rs团队发布的iOS 7完美越狱工具有些特殊,中国版iOS7完美越狱工具中,捆绑有太极助手插件,此插件类似流氓插件,容易导致iOS越狱设备出现白苹果现象(国外版无此插件).所以就出现了一 ...

  6. 怎么把jfif格式改成jpg?

    怎么把jfif格式改成jpg?随着图文在各项工作中的应用普及,图片格式相互转换也是很多公司办公人员的必备小技巧.像把jfif格式改成jpg就是图片格式转换中的一种,像这样的格式转换对于精通ps的人来说 ...

  7. php代码怎么修改成laravel,Laravel框架实现即点即改功能的方法分析

    本文实例讲述了Laravel框架实现即点即改功能的方法.分享给大家供大家参考,具体如下: 有的时候我们不需要更改大量数据,只需要更改一个字段的时候,我们就用到了即点即改,以用户模块,修改用户名称为例, ...

  8. csv转为utf8编码_中文的csv文件的编码改成utf8的方法

    直奔主题:把包含中文的csv文件的编码改成utf-8的方法: 啰嗦几句: 在用pandas读取hive导出的csv文件时,经常会遇到类似UnicodeDecodeError: 'gbk' codec ...

  9. get方法改成post

    1.请求的方法中get方法改成post 文档中请求的方法是get (1)get的请求是正常的 (2)把get的请求方法改成post,系统会报错 (3)不应该提示繁忙,应该提示 "请求的方法是 ...

最新文章

  1. 题目1023:EXCEL排序
  2. bzoj1115: [POI2009]石子游戏Kam
  3. Asp.Net开通支付宝PC端网页支付
  4. 作者:洪学海(1967-),男,博士,中国科学院计算技术研究所研究员,信息技术战略研究中心常务副主任。...
  5. 低代码开发初体验一分钟——Jeecg-Boot 在线报表开发
  6. HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP错误解决方法
  7. CCF201703-3 Markdown(100分)【文本处理】
  8. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理
  9. 运放输入偏置电流方向_运算放大器的输入偏置电流
  10. 【JY】浅析各动力求解算法及其算法数值阻尼(人工阻尼)
  11. ScheduledExecutorService:多线程任务调度
  12. Kafaka的消息消费方式
  13. ORACLE 体系结构详细图
  14. 为什么要用PolyFill(JS中的修补匠)
  15. DBN+LSTM神经网络电容量回归分析,基于MATLAB编程的深度信念网络+lstm回归分析,
  16. 0.618法matlab
  17. 网曝小米HR威胁员工不许仲裁,称“仲裁会留记录,影响子女将来入职小米”!...
  18. 【项目二】爱奇艺分类点击实时统计
  19. wince 访问共享文件_WINCE6.0建立共享文件夹
  20. android google map key,android google map api key取得?

热门文章

  1. 【cudaMemcpy】
  2. “TECH数字中国 2020技术年会”盛大开幕!产学研生态共议“新基建 新金融 新安全”
  3. 数据分析项目实战1——淘宝用户购买行为分析(天池)
  4. 计算机软考难吗?如何通过?
  5. 计网 ---第8章 网络互联设备
  6. 简单谈谈如何提高后台管理系统的易用性、可操作性和人性化程度
  7. IBM ServeRAID Manager 9.30
  8. 打印某个月份的日历表!
  9. 数据分析师是如何被淘汰的?
  10. 最真挚的告白与道歉信(代码实现)