提问者:小点点

返回未定义响应的JS https请求


我正在尝试从JavaScript应用程序向另一个应用程序中的endpoint进行API调用。

当我调用endpoint时,我得到了状态代码和消息,但我无法以任何方式访问响应体。我已经尝试了不同的方法来获取数据,但似乎没有一种方法对我有效。

在方法“someAction”中,我想使用来自API调用的响应/结果中的数据。我在代码中添加了单个日志行打印的输出。

如何在定义“result.status/message”时未定义“result”?

为了将数据/正文作为JSON或字符串获取,我必须做什么?

API本身进行测试,并在Postman中测试时返回数据。

谢谢你的帮助!

const request   = require('request')

let callEndpoint = () => {
    return new Promise((resolve, reject) => {

        const url = `https://my.api.com/endpoint`

        const requestOptions = {
            url: url,
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
                'My-API-Authorization': '123456789'
            },
            json: true,
            strictSSL: false
        }

        request.get(requestOptions, (err, response) => {
            if(err)
            {
                return reject(err);
            }
            return resolve(response);
        });
    });
}

let someAction = () => {
    callEndpoint()
        .then(result => {
            logger.logInfo(result.statusCode)           // => 200
            logger.logInfo(result.statusMessage)        // => OK
            logger.logInfo(result)                      // => undefined
            logger.logInfo(result.toString())           // => [object Object]
            logger.logInfo(result.body)                 // => undefined
            logger.logInfo(result.data)                 // => undefined

            JSON.parse(result.toString())               // => Unexpected token o in JSON at position 1    
            JSON.parse(result)                          // => Unexpected token o in JSON at position 1

            // DO SOME STUFF WITH THE RESULT
        })
}

共1个答案

匿名用户

而不是使用请求,使用axios

axios的链接

如果Axios不能工作,那么检查API的