Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点Js GET调用中REST API的调用POST操作_Node.js_Rest_Express - Fatal编程技术网

Node.js 节点Js GET调用中REST API的调用POST操作

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

我正在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: 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}