首页 > 解决方案 > 无法在节点 js 中调用外部 api

问题描述

我正在尝试从我的 Node 平台调用外部 API,但没有得到预期的结果。

我尝试使用 npm request 模块并转换我的 postfield 数据查询字符串。我试图设置JSON: true,但我没有得到结果。

var request = require('request');
var querystring = require('querystring');

// api_call function
api_call_with_data = function(url, form_data) {
  return new Promise((resolve, reject) => {

    request.post({              
              uri: url,
              headers: {
                "content-type": "application/json"
              },
              body: form_data,
              method: 'POST',
              json: true
            }, (err, res, final_res) => {            
              if (err) reject(err)
              resolve(final_res)
            });
        })
    };

app.get('/call_api', (req, res) => { 

    var api_url = "http://www.example.com/api/test";

    var api_form = {
        "first_name": "Stack",
        "last_name": "Overflow",
        "email_id": "test@example.com"
    };

    var formData = querystring.stringify(api_form);

    api_call_with_data(api_url, formData)
    .then(response => {

        res.send(response);


    })
    .catch(error => {
        res.send(error)
    })

});

我收到错误消息:

{"library":"digital envelope routines","function":"EVP_DecryptFinal_ex","reason":"wrong final block length","code":"ERR_OSSL_EVP_WRONG_FINAL_BLOCK_LENGTH"}

预期结果:

{'status' : 'success', "api_response" : "Thank you to call API"}

标签: javascriptnode.jsapirequestnode-modules

解决方案


推荐阅读