好的,所以我一直在努力解决这个问题。我有一个应该工作的curl命令。由于我不熟悉卷曲,我翻译了"它到节点。但它不起作用。这是卷曲线。
curl -X POST --header 'Content-Type: application/json' --header 'token: XXXXXX' -d '[ \
{ \
"id": "eh", \
\
"kind": "goods", \
"data": {} \
} \
]' 'http://localhost:5000/api/article'
当我将它翻译成节点时,它看起来像这样:
var request = require('request');
var dataString = '[ \
{ \
"id": "eh", \
\
"kind": "goods", \
"data": {} \
} \
]';
var options = {
url: 'http://localhost:5000/api/article',
method: 'POST',
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
我收到的错误消息是
抛出新的TypeError('第一个参数必须是字符串或缓冲区');
有人能告诉我什么是错的吗?感谢
答案 0 :(得分:2)
来自request
文档:
body - 用于PATCH,POST和PUT请求的实体主体。必须是Buffer,String或ReadStream。如果json为true,则body必须是JSON可序列化的对象。
所以你有两个选择。
如果这是您要发送的正文:
var data = [{
"id": "eh",
"kind": "goods",
"data": {}
}];
您可以传递json: true
选项:
var options = {
url: 'http://localhost:5000/api/article',
method: 'POST',
body: data,
json: true
};
或者您可以在发送之前对数据阵列进行字符串化:
var options = {
url: 'http://localhost:5000/api/article',
method: 'POST',
body: JSON.stringify(data)
};
答案 1 :(得分:0)
var dataString = [
{
"id": "eh",
"kind": "goods",
"data": {}
}
];
var options = {
url: 'http://localhost:5000/api/article',
method: 'POST',
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
//request(options, callback);
enter code here
request.post({url:options.url, formData: :options.body}, callback);