使用 Axios 发送 JSON 数据
如果您将 JavaScript 对象作为第二个参数传递给 axios.post()
function ,Axios 会自动为你将对象序列化为 JSON。 Axios 还将设置 Content-Type
标题到 'application/json'
这样的 web 框架 Express 可以自动解析它。
// Axios automatically serializes `{ answer: 42 }` into JSON.
const res = await axios.post('https://httpbin.org/post', { answer: 42 });
res.data.data; // '{"answer":42}'
res.data.headers['Content-Type']; // 'application/json;charset=utf-8',
这意味着您通常不必担心将 POST 正文序列化为 JSON:Axios 会为您处理。
使用预序列化的 JSON
如果您碰巧有一个想要作为 JSON 发送的序列化 JSON 字符串,请小心。 如果您将字符串传递给 axios.post()
,Axios 将其视为 表单编码的请求体 。
const json = JSON.stringify({ answer: 42 });
const res = await axios.post('https://httpbin.org/post', json);
// Axios automatically sets the `Content-Type` based on the
// 2nd parameter to `axios.post()`.
res.data.headers['Content-Type']; // 'application/x-www-form-urlencoded',
解决方案很简单:确保设置 Content-Type
如果您将预序列化的 JSON 字符串传递给 axios.post()
。
const json = JSON.stringify({ answer: 42 });
const res = await axios.post('https://httpbin.org/post', json, {
headers: {
// Overwrite Axios's automatically set Content-Type
'Content-Type': 'application/json'
}
});
res.data.data; // '{"answer":42}'
res.data.headers['Content-Type']; // 'application/json',
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论