application/json 和 application/x-www-form-urlencoded 有什么区别?

本文详细介绍了HTTP请求中两种常见的Content-Type:application/json和application/x-www-form-urlencoded的区别。application/json用于发送JSON格式的数据,保留原始数据类型;而application/x-www-form-urlencoded则将数据编码为URL查询字符串,通常将所有属性转换为字符串。前者常用于复杂数据结构,后者适用于扁平参数。在处理跨域请求时,JSON通常是预检请求的一部分。

两者之间有什么区别?

第一种:application/json 

request.ContentType = "application/json; charset=utf-8";

 分析:

第一种情况是告诉 Web 服务器您正在发布 JSON 数据,如下所示:

{"Name": "John Smith", "Age": 23}

​​​

“application/json”内容类型是预检请求之一。

现在,如果请求不是简单的请求,浏览器会自动在原始请求之前发送HTTP请求,然后通过OPTIONS方法检查发送原始请求是否安全。如果可以,则发送实际请求。您可以在此处查找详细信息。

application/json 是初学者友好的。URL编码数组可能是一场噩梦!

第二种:application/x-www-form-urlencoded

request.ContentType = "application/x-www-form-urlencoded";

分析:

第二种情况是告诉 Web 服务器,您将在 URL 中对参数进行编码:

Name=John+Smith&Age=23

1.application/x-www-form-urlencoded的名字来自哪里?
如果发送HTTP GET请求,则可以按如下方式使用查询参数:
http:/example.com/path/to/page?名称=雪貂&颜色=紫色
字段的内容编码为查询字符串。的名称来自前面的u川查询参数,但查询参数位于请求正文
不是url的位置。application,/x-wwwW-form-
urlencoded
整个表单数据作为长查询字符串发送。查询字符串包含由&字符分隔的名称-值对
例如,字段1=值1&字段2=值2
2.它可以是简单的情求,称为简单-不要触发印前检查
简单请求必须具有一些属性。您可以在此处查找详细信息。其中之一是,对于简单请求,
Content-Type标头只允许三个值:
1、application/x-www-form-urlencoded
2、多部分表单数据
3、文本/纯文本

对于大多数扁平参数树,尝试并测试了application/x-www-form-urlencoded。.

webRequest.ContentType ="application/json; charset=utf-8";


数据将采用json格式。

axios 和 superagent 是两个更流行的 npm HTTP 库,默认情况下使用 JSON 主体。

{
  "id": 1,
  "name": "Foo",
  "price": 123,
  "tags": [
    "Bar",
    "Eek"
  ],
  "stock": {
    "warehouse": 300,
    "retail": 20
  }
}

两者之间最大的区别之一是,JSON编码帖子通常会保留发送的值的数据类型(只要它们是有效的JSON数据类型),而apprament/x-www-form-urlencoded通常会将所有属性转换为字符串。

例如,在 JSON 编码的帖子中:

{"Name": "John Smith", "Age": 23}

服务器很可能会将 Age 属性解析为整数 23。

而在

Name=John+Smith&Age=23

服务器很可能会将 Age 解析为字符串“23”。

当然,如果您使用其他图层来解析这些值并将其转换为适当的类型,这可能不是问题。

================================

您可以通过打开f12控制台看到这一点:

 

表单数据

页眉

content-type: multipart/form-data; boundary=--------------------------590299136414163472038474

身体

key1=value1key2=value2

x-www-form-urlencoded

页眉

Content-Type: application/x-www-form-urlencoded

身体

key1=value1&key2=value2

原始文本/纯文本text/plain

页眉

Content-Type: text/plain

身体

This is some text.

原始 json

页眉

Content-Type: application/json

身体

{"key1":"value1","key2":"value2"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南北极之间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值