如何在 Firefox 开发工具主体中发送嵌套对象

问题描述 投票:0回答:1

当我尝试使用下面的正文进行发布时,服务器收到的值是字符串而不是对象。我尝试过不同的报价但无济于事。为了让开发工具正确提交我的嵌套对象,我是否需要遵循某种格式? enter image description here

enter image description here

firefox request http-post firefox-developer-tools
1个回答
0
投票

XMLHttpRequest POST 请求体通常有三种格式:URI 编码文本、JSON 和多部分表单数据。关于

nest={"type_id":33, "name":'test'}
的问题似乎混淆了 URI 编码文本和 JSON(尽管可以以某种方式将它们组合起来)。多部分表单数据适用于二进制文件和大型传输。

URI 编码的主体看起来就像 GET 查询。 (

name1=value1&name2=value2&name3=value3 ...
)

名称和值都被 URI 编码为 URI 组件(

=
&
不是),但实际上大多数人都会选择对其自身进行编码的名称(例如字母数字)。

JSON 主体只是 JSON(字符串化对象)。

这道题的对象是……

{
  nest: {
    type_id: 33,
    name: 'test'
  }
}

... 字符串化为

{"nest":{"type_id":33,"name":"test"}}
。这就是整个身体。

“网络操作”子面板的“新请求”选项卡应该有一个

Content-Type
标头,其中包含内容
application/json
,尽管在野外,我在 JSON 中更频繁地看到
text/plain
。如果没有标题,您可以将其添加到底部有空
name
value
字段的位置。

Screenshot of New Request tab

为了完整起见,URI 编码的 POST 将(必须)具有

application/x-www-form-urlencoded
的内容类型。唯一的值是字符串,因此
type_id=33&name=test
使用字符串值
type_id
传输
33

顺便说一句,由于 JSON 是一个字符串,因此可以将 URI 编码的 JSON 传输为类似的内容

'json=' + encodeURIComponent( '{"nest":{"type_id":33,"name":"test"}}' )
这是
json=%7B%22nest%22%3A%7B%22type_id%22%3A33%2C%22name%22%3A%22test%22%7D%7D
,虽然我从未见过有人这么做过。

© www.soinside.com 2019 - 2024. All rights reserved.