我无法通过nodeJS将curl转换为等效的http请求。我使用了Request模块,但在发出请求时我似乎做错了。当我运行它时,它给了我
body: Cannot POST /path
不确定如何调试这个,任何想法?
var data = JSON.stringify({
'sender': {
'name': 'name',
'handle': 'handle'
},
'subject': 'Title here',
'body': 'something something',
'metadata': {}
});
var options = {
host: 'website.com',
path: '/path',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer <token>',
'Accept': 'application/json',
'Content-Length': Buffer.byteLength(data)
}
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log("body: " + chunk);
});
});
req.write(data);
req.end();
以下是我尝试为上述nodejs制作的等效curl(有效)。
curl --include \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <token>" \
--header "Accept: application/json" \
--data-binary "{
\"sender\": {
\"name\": \"name\",
\"handle\": \"handle\"
},
\"subject\": \"Title here\",
\"body\": \"something something\",
\"metadata\": {}
}" \
'website.com/path"
答案 0 :(得分:1)
您可以将json
参数与request库直接包含在JSON数据中:
var request = require('request');
var options = {
uri: 'http://website.com/path',
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Accept': 'application/json'
},
json: {
'sender': {
'name': 'name',
'handle': 'handle'
},
'subject': 'Title here',
'body': 'something something',
'metadata': {}
}
};
var req = request(options, function(error, response, body) {
if (error) {
console.log(error);
return;
}
if (response.statusCode == 200) {
console.log(body);
} else {
console.log("receive status code : " + response.statusCode);
}
});
json - 将body设置为值的JSON表示并添加 内容类型:application / json标头。另外,解析 响应机构为JSON。