0

我必须发送标头内容类型设置为“x-www-form-urlencoded”的 post 方法的数据。

此表单数据也是嵌套对象。例如

const formData = { name: "hello", email:abc@gmail.com, education: { subject: "engilsh" ... } } }

4

2 回答 2

0

我假设您遇到的问题是收到的数据显示为education: [object Object]

解决此问题的最简单方法是将标头从 更改x-www-form-urlencodedapplication/json. 这样带有键的对象education就不会被序列化为[object Object]

解决此问题的另一种方法(但很麻烦)是序列化数据客户端:

const formData = { name: "hello", email:abc@gmail.com, education: { subject: "engilsh" ... } } }
const formDataSerial = { raw: JSON.stringify(formData) }
// Send to server

并在服务器上,进行另一步解包:

const dataSerial = formData.raw
const data = JSON.parse(dataSerial)
// Yay!
于 2021-07-24T23:12:38.503 回答
0

您可以使用该querystring模块。

像这样发布类似 Express 的伪代码的数据:

const querystring = require('querystring');

// ...

router.post(
  'https://api/url',
  querystring.stringify(formData),
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
)

// 编辑:该querystring模块不适用于嵌套对象。我的错。我可能会建议将对象序列化为 JSON 字符串。

于 2020-08-21T14:13:55.673 回答