payload和formData有什么不同?

最近做项目的时候,在通过post请求向服务端发送数据的时候,请求失败了。错误信息如下:

返回的400(bad request)错误,说明客户端这边发送的请求是有问题的。

和通过jquery中的ajax方法发送的请求作对比。发现问题出在了请求的主体部分。

这里的请求主体部分是payload的形式的。

而直接通过jq,是如下这种formdata形式。

formData是什么?

formData是客户端主体部分组装数据的一种方式,当我们使用:

  1. method=‘POST‘提交一个HTML-Form表单
  2. 如上图中黄色部分的content-Type:application/x-www-form-urlencoded
  3. content-Type:multipart/form-data

这三种方式去提交请求主体的时候,就是formData形式。

将如上的请求简写一下:

起始行:POST /getProduct HTTP/1.1
首部: Content-Type: application/x-www-form-urlencoded

主体1:productId=3189 单参
主体2:productId=3189&orderId=145 多参

主体的形式会有两种,在多参数的情况下,和get请求一样,是用&进行连接的。

$.ajax({
  url : ‘/v2/product/getProductProp‘,
  data :{
    ‘productId‘: proid,
  },
  type: ‘post‘,
})
.then(function(data) {
  // 成功的回调
})
.fail(function() {
  // 失败的回调
  that.fetchDataFailed();
})
.done(function() {
  // 请求结束的回调
});

在jq的ajax模块中,contentType的默认是使用的formData发送主体的。既然如此的话,我们就通过传入自定义的contentType

$.ajax({
  url : ‘/v2/product/getProductProp‘,
  data :{
    ‘productId‘: proid,
  },
  type: ‘post‘,
  contentType:‘application/json‘ //注意这里的不同
})
.then(function(data) {
  // 成功的回调
})
.fail(function() {
  // 失败的回调
  that.fetchDataFailed();
})
.done(function() {
  // 请求结束的回调
});

是的,我们确实成功的修改了formData的提交形式,变成了payload.

payload是什么?

payload是一种以JSON格式进行数据传输的一种方式。

http可能会传输payload,如果不限制其请求的方式(那么请求的方法就是OPTIONS)或者响应的状态码,其包含元数据,头部区域和数据。

如果数据是通过正常的put或者post方法发送的,那么payload就是一个http请求起始行紧接一个CRLF后面的那一部分。

起始行:POST /getProduct HTTP/1.1
首部: Content-Type: application/json

主体1:{"productId":3189} 单参
主体2:{"productId":3189,"orderId":145} 多参

同样的,我们可以将payload形式的参数。通过formData()来组装。

通过formData()组装后的数据就像表单数据一样,变成了键/值对的形式。

小结

  • 首部属性contentType可以改变请求的数据提交方式:application/json(payload),application/x-www-form-urlencoded(formData)
  • 服务端的响应方式决定客户端的提交方式
  • 使用formData()可以通过payload提交表单数据:multipart/form-data

原文地址:https://www.cnblogs.com/crazycode2/p/8988938.html

时间: 2024-10-09 11:53:30

payload和formData有什么不同?的相关文章

【笔记】payload和formData

formData是客户端主体部分组装数据的一种方式,当我们使用: method='POST'提交一个HTML-Form表单 content-Type:application/x-www-form-urlencoded content-Type:multipart/form-data payload是一种以JSON格式进行数据传输的一种方式. 参考文章: http://www.qingpingshan.com/m/view.php?aid=293356 https://www.bbsmax.com

HTTP请求中 request payload 和 formData 区别?

原文地址: http://www.cnblogs.com/tugenhua0707/p/8975615.html FormData和Payload是浏览器传输给接口的两种格式,这两种方式浏览器是通过Content-Type来进行区分的(了解Content-Type),如果是 application/x-www-form-urlencoded的话,则为formdata方式,如果是application/json或multipart/form-data的话,则为 request payload的方式

node 上传文件 http client to post file

node做http client 发送post数据是很容易的事情,但要上传文件就不是太容易了主要是因为上传文件的报文和普通post是不太一样的 要了解http post可以看下这个 https://imququ.com/post/four-ways-to-post-data-in-http.html npm上封装好的第三方库很多 比如request,我们来看下自己实现需要怎么做 首先要声称个随机串,这个是用来做分段的标记 var boundaryKey = Math.random().toStr

Jmeter put 方法总结

1.百度到很多关于jmeter put 方法的使用 ,但觉得都完全 下面我大致总结下 : >1.放入 url 中 如:www.*****.com?a=1&b=2 ; >2.放入到parameters的值中 名称为空 : >3.添加Content-Type :application/json 或者 application/x-www-form-urlencoded 以下是jmeter 官网给出的说明: http://jmeter.apache.org/usermanual/comp

FormData和Payload

FormData和Payload是浏览器传输数据给接口的其中两种格式,这两种方式浏览器是通过Content-Type来进行区分的,如果是application/x-www-form-urlencoded,则为formdata方式,如果是application/json方式,则为payload方式. 代码是用的backbone和zepto,主要是content-type,还需要使用JSON对象进行转化一下. formdata: payload:

formdata 和 Payload 区别

FormData和Payload是浏览器传输给接口的两种格式,这两种方式浏览器是通过Content-Type来进行区分的(了解Content-Type),如果是 application/x-www-form-urlencoded的话,则为formdata方式,如果是application/json或multipart/form-data的话,则为 request payload的方式. 原文地址:https://www.cnblogs.com/winyh/p/10088573.html

AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式

HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value&name1=value1的形式在请求体中.通过chrome的开发人员工具能够看到例如以下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求: RequestURL:http://127.0.0.1:8080/test/test.do?name=mikan&address=

AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式

HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中.通过chrome的开发者工具可以看到如下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求: RequestURL:http://127.0.0.1:8080/test/test.do?name=mikan&address=str

jmeter java 请求 payload

1.注册页面抓包看见内容如下: POST http://test.nnzhp.cn/bbs/forum.php?mod=post&action=edit&extra=&editsubmit=yes HTTP/1.1Host: test.nnzhp.cnConnection: keep-aliveContent-Length: 1311Cache-Control: max-age=0Origin: http://test.nnzhp.cnUpgrade-Insecure-Reques