Javascript 如何解决';NodeJS API调用响应是不可解析的对象';?

Javascript 如何解决';NodeJS API调用响应是不可解析的对象';?,javascript,node.js,api,Javascript,Node.js,Api,我在API调用后得到以下结果 我的节点版本是12.x {"type":"Buffer","data":[123,34,101,114,114,111,114,115,34,58,91,34,74,87,84,32,105,115,32,101,120,112,105,114,101,100,32,111,114,32,100,111,101,115,32,110,111,116,32,104,97,118,101,32,112,114

我在API调用后得到以下结果

我的节点版本是12.x

 {"type":"Buffer","data":[123,34,101,114,114,111,114,115,34,58,91,34,74,87,84,32,105,115,32,101,120,112,105,114,101,100,32,111,114,32,100,111,101,115,32,110,111,116,32,104,97,118,101,32,112,114,111,112,101,114,32,39,101,120,112,39,32,99,108,97,105,109,34,93,125,11]}
请参阅下面的代码片段:

let postOptions = {
        host: 'vault.server',
        path: '/v1/auth/gcp/login',
        method: HTTPS.POST_REQUEST,
        headers: {
            'Content-Type': 'application/json; charset=utf-8',
            'X-Vault-Namespace': 'mynamespace'
        },
        json: true,
        
        rpDefaults: {
            strictSSL: false
        }
    };

    let requestPayLoad = {

        "role": this._vaultRole,
        "jwt": signedJWT
    };
    console.log(JSON.stringify(requestPayLoad));
    console.log(JSON.stringify(postOptions));
    try {
        let result = await HTTPS.makeRequest(postOptions, JSON.stringify(requestPayLoad), HTTPS.POST_REQUEST);
        console.log('Response***************',JSON.stringify(result));
        return result.auth.client_token;
    }
请参阅以下http生成请求方法的代码段

return new Promise((resolve, reject) => {
        let rq = https.request(options, (res) => {
            let response;
            let chunks = [];
            res.on('data', (chunk) => {
                chunks.push(chunk);
            });
            res.on('end', () => {
                response = Buffer.concat(chunks);
                return resolve(response);
            });
        });
        rq.on('error', (e) => {
            return reject({'statusCode': 500, 'success': false, 'error': e.toString()});
        });
        if (type === 'POST') {
            rq.write(data);
        }
        rq.end();
    });

如果要访问API调用返回的响应中的数据,请帮助我解决此问题 做:


设data=result.data;
我想让你得到客户端令牌,如下所示:

return result.auth.client_token;
这是不可能的,因为响应上没有auth属性:

 {"type":"Buffer","data":[123,34,101,114,114,111,114,115,34,58,91,34,74,87,84,32,105,115,32,101,120,112,105,114,101,100,32,111,114,32,100,111,101,115,32,110,111,116,32,104,97,118,101,32,112,114,111,112,101,114,32,39,101,120,112,39,32,99,108,97,105,109,34,93,125,11]}

如果要访问API调用返回的响应中的数据 做:


设data=result.data;
我想让你得到客户端令牌,如下所示:

return result.auth.client_token;
这是不可能的,因为响应上没有auth属性:

 {"type":"Buffer","data":[123,34,101,114,114,111,114,115,34,58,91,34,74,87,84,32,105,115,32,101,120,112,105,114,101,100,32,111,114,32,100,111,101,115,32,110,111,116,32,104,97,118,101,32,112,114,111,112,101,114,32,39,101,120,112,39,32,99,108,97,105,109,34,93,125,11]}

您正在接收作为缓冲区的数据。使用toString()方法将此缓冲区转换为try块内的字符串

试试看{
让result=wait HTTPS.makeRequest(postOptions、JSON.stringify(requestPayLoad)、HTTPS.POST_-REQUEST);
log('Response**************',result.toString());
返回result.auth.client_令牌;

}
您正在接收作为缓冲区的数据。使用toString()方法将此缓冲区转换为try块内的字符串

试试看{
让result=wait HTTPS.makeRequest(postOptions、JSON.stringify(requestPayLoad)、HTTPS.POST_-REQUEST);
log('Response**************',result.toString());
返回result.auth.client_令牌;

}
您可以添加
HTTP.makeRequest
的代码吗?问题已编辑,添加了所需的代码段您可以添加
HTTP.makeRequest
的代码吗?问题已编辑,添加了所需的代码段