从React App中的响应头检索X-Request-Id

时间:2018-03-27 01:15:44

标签: reactjs https header

我有一个React应用程序,我使用https模块来调用API。我需要能够从响应头中检索x-request-id,但是响应头只返回content-type。如何才能让x-request-id显示在响应标题中?

以下是我的代码示例:

import https from 'https';

getData(bodyData) {
    return new Promise((resolve) => {
        const postData = JSON.stringify(bodyData);
        const request = https.request({
            hostname: 'https/myhostname',
            path: '/my/path',
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                Accept: 'application/json',
                'x-api-key': 'MY_ID', 
                authorization: 'MY_TOKEN',
                'x-product': 'MY_PRODUCT_ID',
                'x-product-location': 'MY_LOCATION',
            },
            withCredentials: false,
            dataType:'json',
            processData: false,

        }, (res) => {
            // need to get x-request-id from response header here
            const req = request;
            if (res.statusCode >= 300) {
                const myError = new Error(res.statusCode);
                resolve(myError);
            }
            else {
                let data = '';
                res.on('data', chunk => data += chunk);
                res.on('end', () => {
                    // Success!
                    try {
                        resolve(JSON.parse(data));
                    }
                    catch (e) {
                        resolve(data);
                    }
                });
            }
        });

        request.write(postData);
        request.end();
    });
  }
}

2 个答案:

答案 0 :(得分:0)

嘿,我不确定React App,通常您必须在响应标头中添加X-REQUEST-D。例如,在烧瓶中,我执行以下操作。

from flask_log_request_id import current_request_id
            headers = {
               'X-REQUEST-ID' : current_request_id()
            }

如代码所示,current_request_id()返回当前的X-REQUEST-ID,该ID可以传递给respone标头。

  

如何获取x-request-id以显示在响应中   标头?

您应该在REACT中搜索类似于current_request_id()的模块,该模块可以为您返回当前的X-REQUEST-ID,并将其附加到标题中。

答案 1 :(得分:0)

我想您必须从快速服务器发送x-request-id作为响应标头。 该库为请求生成UUID,并将其添加到X-Request-Id标头中。如果请求包含X-Request-Id标头,请改用其值。

您可以在此用例中使用npm模块express-request-id

var app = require('express')();
var addRequestId = require('express-request-id')();

app.use(addRequestId);

app.get('/', function (req, res, next) {
    res.send(req.id);
    next();
});

app.listen(3000, function() {
    console.log('Listening on port %d', server.address().port);
});

希望有帮助!