簡體   English   中英

在節點Js GET調用中調用REST API的POST操作

[英]Calling POST operation of REST API in node Js GET call

我正在通過返回JSON數據的REST API執行POST操作。 我正在嘗試使用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));
    });
}

使用Curl命令調用REST API:

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);
        })
    });
}

非常感謝Rahul。

在標頭中添加內容類型后,我可以看到響應。 我沒有正確看到達人是我的錯誤:(

const snapOpts = {
    url: 'https://triageqa.paypalcorp.com:8443/v1/triage/fetchers',
    method: 'POST',
    json: true,
    rejectUnauthorized: false,
    headers: {
        'Content-Type': 'application/json'
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM