Подтвердить что ты не робот

Как перенаправить расширение с сервера на сервер промежуточного программного обеспечения

Я использую удаленное сшивание схемы на моем сервере middlware. Я могу получить схему удаленно на сервере промежуточного уровня, определив свой маршрут, как это, на сервере промежуточного программного обеспечения.

app.use('/graphql', graphqlHTTP((request,res) => {
 const startTime = Date.now();
 return {
   schema: remoteSchema
   graphiql: false,
   extensions({ document, variables, operationName, result }) {
     return {
       // here I am not getting extensions which I have on my another server as below.
       console.log(res); // this does not have additional info and response headers
       console.log(result); // this only has response against the query
     }
   };
})); 

Я получаю результат запроса в результате, но не получаю заголовки ответов и дополнительную информацию, которая является частью расширения, которое я добавляю на свой другой сервер, где есть resolvers.

{
    "data": {
        "records": {
            "record": [{
                    "id": 1,
                },
                {
                    "id": 2,
                }
            ],
        },
        "additionalInfo": {}
    },
    "extensions": {
        "info": {}
    }
}

В чем может быть проблема? Вот как я добавляю заголовки ответов и дополнительную информацию о моем другом сервере в расширениях. Я отлаживаю ниже код, в котором доступны данные расширения. Это не передается серверу промежуточного уровня.

extensions({ document, variables, operationName, result }) {
   result.data.additionalInfo = res.additionalInfo;
   // extension to write api headers in response
   var headerObj = {};
   res.apiHeaders.forEach(element => {
     merge(headerObj, element);
   });
   result.headerObj = headerObj;
   return {
      information: headerObj
   };
}

Мой поток приложений - это то, что я нахожу маршрут промежуточного программного обеспечения, а затем другой маршрут сервера, используя удаленное сшивание схем. Я хочу, чтобы расширение, которое я добавляю на другой сервер, должно быть перенаправлено на мой сервер промежуточного уровня в ответ.

4b9b3361

Ответ 1

У вас есть console.log() запрос? Я уверен, что все, что вы получаете в функции расширения, касающейся заголовков, которые вы хотите вывести, будет в запросе, потому что это промежуточное программное обеспечение на сервере, ответ - это то, что вы собираетесь изменить, прежде чем отправлять его следующей функции или назад к клиенту.

extensions({ document, variables, operationName, result }) {
    // console.log the request object to check the header information from the request.
    console.log(request);
    return {
        // This will fill the information key with all the headers in the request.
        information: reaquest.header
    };
}