如何将Python中带string.json()的POST请求转换为JavaScript?
Python代码解析与JavaScript实现
先搞懂Python里的逻辑
你的Python代码里,requests.post的json参数其实帮你做了两件关键的事:
- 把传入的Python对象(也就是
username.json()返回的内容)自动序列化成JSON格式的字符串 - 悄悄给请求头加上
Content-Type: application/json,告诉服务器你发的是JSON数据
这里的username.json(),如果username是requests库的响应对象,那这个方法是把接口返回的JSON字符串解析成Python字典/列表;如果是自定义对象,那它应该返回了一个能被JSON序列化的Python数据结构(比如字典)。
JavaScript实现方式
浏览器端用Fetch API
// 先准备好要发送的对象(对应Python里username.json()返回的内容) const userData = { /* 比如 {name: 'testUser'} 这类JSON结构 */ }; fetch('你的请求URL', { method: 'POST', headers: { // 这里放你的自定义请求头,比如Authorization、Token之类的 'Content-Type': 'application/json' // 必须设置这个,和Python里requests自动做的事对应 }, body: JSON.stringify(userData) // 把JS对象转成JSON字符串,手动完成Python里json参数的序列化工作 }) .then(response => response.json()) // 如果需要解析接口返回的JSON .then(data => { console.log('请求成功', data); }) .catch(error => { console.error('请求失败', error); });
Node.js环境(用axios库)
先装axios:npm install axios
const axios = require('axios'); const userData = { /* 对应Python里username.json()的内容 */ }; axios.post('你的请求URL', userData, { headers: { // 自定义请求头 } }) .then(response => { console.log('请求成功', response.data); }) .catch(error => { console.error('请求失败', error); });
axios会自动把传入的JS对象转成JSON字符串,还会自动设置Content-Type: application/json,和Python的requests.post(json=...)逻辑完全一致。
Node.js原生http模块(不用第三方库)
const http = require('http'); const data = JSON.stringify({ /* 要发送的JSON结构 */ }); const options = { hostname: '目标域名', port: 80, // HTTPS的话用443 path: '请求路径', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(data), // 其他自定义请求头 } }; const req = http.request(options, (res) => { let body = ''; res.on('data', chunk => { body += chunk; }); res.on('end', () => { console.log('响应内容', JSON.parse(body)); }); }); req.on('error', (e) => { console.error('请求错误', e); }); req.write(data); req.end();
内容的提问来源于stack exchange,提问作者deadinside
相关产品推荐
相关产品推荐

