Node.js 节点Js GET调用中REST API的调用POST操作
我正在RESTAPI上执行POST操作,该API返回JSON数据。我正试图用Node JS进行调用,但没有得到任何响应。有人能帮我找到这里的问题吗Node.js 节点Js GET调用中REST API的调用POST操作,node.js,rest,express,Node.js,Rest,Express,我正在RESTAPI上执行POST操作,该API返回JSON数据。我正试图用Node JS进行调用,但没有得到任何响应。有人能帮我找到这里的问题吗 'use strict'; const request = require('request'); const snapOpts = { url: 'https://triageqa.paypalcorp.com:8443/v1/triage/fetchers', method: 'POST', strictSSL: fa
'use strict';
const request = require('request');
const snapOpts = {
url: 'https://triageqa.paypalcorp.com:8443/v1/triage/fetchers',
method: 'POST',
strictSSL: false
};
const snapFilter = {
"reporter": "sdmariappan",
"fetchers_list": {
"change_ticket_fetcher_request" : {
"start_time": "2018-01-01T00:00:00.000Z",
"end_time": "2018-02-07T00:00:00.000Z",
"pools" : [
"xxx"
]
}
}
};
let obj;
module.exports = function (router) {
router.get('/snap', function (req, res) {
callsnap(function (data) {
res.send(data)
});
});
};
function callsnap(cb) {
requestSnap("POST", snapFilter)
.then(data => {
obj = JSON.parse(JSON.stringify(data,null,2));
cb(obj);
})
.catch(err => {
console.error(err);
});
}
function requestSnap(method, queryData) {
snapOpts.method = method;
snapOpts.qs = queryData;
return new Promise((resolve, reject) => {
let responseData = '';
request(snapOpts)
.on('error', err => reject(err))
.on('data', chunk => responseData += chunk)
.on('end', () => resolve(responseData));
});
}
调用REST API的Curl命令:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Bearer EEwJ6tF9x5' -d ' {
"reporter": "sdmariappan",
"fetchers_list": {
"change_ticket_fetcher_request" : {
"start_time": "2018-01-01T00:00:00.000Z",
"end_time": "2018-02-07T00:00:00.000Z",
"pools" : [
"xxx",
]
}
}
}
} ' 'https://triageqa.paypalcorp.com:8443/v1/triage/fetchers'
我做了一些修改
module.exports = function (router) {
router.get('/snap', function (req, res) {
requestSnap("POST", snapFilter)
.then(data => {
res.json(data);
})
.catch(err => {
res.status(400).json(data);
});
});
};
function requestSnap(method, queryData) {
snapOpts.method = method;
snapOpts.body = queryData;
return new Promise((resolve, reject) => {
request(snapOpts, function (err, res, body) {
if (err) {
console.error('error posting json: ', err)
reject(err);
}
console.log('body: ', body);
resolve(body);
})
});
}
我做了一些修改
module.exports = function (router) {
router.get('/snap', function (req, res) {
requestSnap("POST", snapFilter)
.then(data => {
res.json(data);
})
.catch(err => {
res.status(400).json(data);
});
});
};
function requestSnap(method, queryData) {
snapOpts.method = method;
snapOpts.body = queryData;
return new Promise((resolve, reject) => {
request(snapOpts, function (err, res, body) {
if (err) {
console.error('error posting json: ', err)
reject(err);
}
console.log('body: ', body);
resolve(body);
})
});
}
非常感谢Rahul
在标题中添加内容类型后,我可以看到响应。我的错误是没有正确地看到tat:(
非常感谢Rahul
在标题中添加内容类型后,我可以看到响应。我的错误是没有正确看到tat:(
在post操作中,您必须传递body而不是qs.catch(err=>{console.error(err);});您只是在打印错误而不是返回响应,您应该返回响应。我有一个回调(cb(obj))返回响应。是否有用于传递正文的示例?我只是设置查询参数。检查我的答案。在post操作中,您必须传递正文而不是qs.catch(err=>{console.error(err);});您只是在打印错误而不是返回响应,您应该返回响应。我有一个回调(cb(obj))返回响应。有没有传递正文的示例?我只是在设置查询参数。检查我的答案。谢谢。但我仍然得到错误为“错误发布json:error:Argument error,options.body.”。抱歉。我是新加入节点JStry snapOpts.formData而不是snapOpts.body的。此错误现在:(节点:108568)未处理的PromisejectionWarning:未处理的承诺拒绝(拒绝id:2):ReferenceError:未定义数据(节点:108568)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。请使用表单而不是正文。这将给出200响应:),但正文为空..console.log('body:',body);我希望类似于{“triage_id”:11111}的内容谢谢。但我还是收到了“错误发布json:error:Argument error,options.body.”的错误。对不起,我不熟悉节点JStry snapOpts.formData,而不是snapOpts.body此错误现在:(节点:108568)未处理Promisejection警告:未处理的承诺拒绝(拒绝id:2):引用错误:未定义数据(节点:108568)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。请使用表单而不是正文。这将给出200响应:),但正文为空。。log('body:',body);我期待着类似于{“分类id”:11111}