我想在javascript请求中创建HTTP POST,就像下面的curl(传递一些参数)到Django服务器一样。
curl -X POST --header 'Content-Type: application/x-www-form-urlencoded' --header 'Accept: application/json' -d 'token=Rh7JARH¶m_id=2' 'http://localhost:8000/api/test/param_id'
这是我创建 JavaScript 代码的尝试。请注意我正在使用 npm“请求”模块
var request = require('request');
var jsonObject = {
'token': 'Rh7JARH',
'param_id': 2
};
var jsonData = JSON.stringify(jsonObject);
let url = "http://localhost:8000/api/test/param_id";
request.post({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
url: url,
body: jsonData
}, function(error, response, body) {
if (error) {
console.log("error");
} else {
console.log("OK");
var jsonResponse = JSON.parse(body);
console.log(jsonResponse);
}
});
但是 token 和 param_id 是一个问题,在服务器上它提示
django.utils.datastructures.MultiValueDictKeyError: "'token'"
我想使用 npm 请求模块创建与 javascript 中相同的curl HTTP POST,如示例中所示。我想我已经很接近了,它可能是 jsonObject
最佳答案
下面的代码应将所需的参数 POST 到服务器。我已经在我自己的服务器上对此进行了测试,并且 url 编码的参数已正确解析:
const request = require('request');
const headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json'
};
const options = {
url: 'http://localhost:8000/api/test/param_id',
method: 'POST',
headers: headers,
body: 'token=Rh7JARH¶m_id=2'
};
request(options, (error, response, body) => {
if (error) {
console.error("An error has occurred:", error);
} else {
console.log("Response:", body);
}
});
关于javascript - https post 在 javascript 中类似于带有 header 和参数的curl -d 和 "request"模块nodejs npm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58814502/