Обновление надстройки Node.js с помощью cppgraphqlgen для поддержки версии 4.5.8 и интеграции GraphiQLC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Обновление надстройки Node.js с помощью cppgraphqlgen для поддержки версии 4.5.8 и интеграции GraphiQL

Сообщение Anonymous »

Я работаю над надстройкой Node.js, используя cppgraphqlgen, и недавно обновился с версии 3.6.0 до последней версии 4.5.8. Существующая реализация включает в себя базовую схему GraphQL и MockData для возврата простого приветственного сообщения «Hello World». Цель этого вопроса двоякая:
  • Обновить надстройку для беспрепятственной работы с версией cppgraphqlgen
    4.5.8.
  • Изучить новые подходы к интеграции этого дополнения с веб-интерфейсом GraphiQL
    , включая динамическое выполнение запросов.
Текущая настройка
Исходные файлы, задействованные в проекте:
  • main.cpp
  • GreetImpl.h< /li>
    GreetImpl.cpp
  • schema.greet.graphql
  • binding.gyp
    Реализация GreetImpl.cpp на данный момент обрабатывает простое приветственное сообщение с помощью cppgraphqlgen версии 3.6.0, но при обновлении до версии 4.5.8 возникают проблемы.
    Исходный код скомпилирован с использованием node-gyp. Ниже приведена структура желаемой функциональности:
    • Дополнительные операции Node.js
    Дополнение должно поддерживать следующие операции:
    • startService()
    • stopService()
      fetchQuery(query: string): строка
    Пример использования в Node.js
    Вот как надстройка используется в среде Node.js:

    Код: Выделить всё

        //index.js
    
    const addon = require('./build/Release/greet.node');
    
    addon.startService();
    console.log(addon.fetchQuery(`
    {
    hello {
    greet
    }
    greetmsg
    }
    `), '', '')
    addon.stopService();
    
    • Интеграция с веб-интерфейсом GraphiQL
    Я бы хотелось бы интегрировать это дополнение в сервер GraphiQL с помощью express и express-graphql. Ниже приведен план реализации:

    Код: Выделить всё

        //server.js
    
    const express = require("express");
    const { graphqlHTTP } = require("express-graphql");
    const addon = require("./build/Release/greet.node");
    
    // Initialize C++ service
    addon.startService();
    
    // Define a custom resolver
    const customResolver = async ({ query, variables }) => {
    const result = addon.fetchQuery(JSON.stringify({ query, variables }));
    return JSON.parse(result); // Return parsed JSON
    };
    
    // GraphQL Middleware
    const graphqlMiddleware = graphqlHTTP(async (req) => ({
    schema: require('fs').readFileSync(__dirname + '/src/schema/schema.greet.graphql').toString(), // Schema is dynamically handled by cppgraphqlgen
    customExecuteFn: ({ document, variables }) =>
    customResolver({ query: document.loc.source.body, variables }),
    graphiql: true,
    }));
    
    const app = express();
    app.use("/graphql", graphqlMiddleware);
    
    // Start the server
    const PORT = 4000;
    app.listen(PORT, () => {
    console.log(`GraphQL API available at http://localhost:${PORT}/graphql`);
    });
    
    // Cleanup on exit
    process.on("SIGINT", () => {
    addon.stopService();
    process.exit();
    });
    
    Ключевые вопросы:
    • Обновление до cppgraphqlgen 4.5.8:
    • Какие изменения необходимы для обновления GreetImpl.cpp для поддержки новой версии?
    • Есть ли любые конкретные проблемы совместимости или критические изменения в версии 4.5.8 по сравнению с 3.6.0?
    • Интеграция GraphiQL:
    • Как можно легко интегрировать надстройку узла с GraphiQL для динамической обработки схемы и запросов?
    • Использует ли описанный выше подход промежуточного программного обеспечения GraphQL собственный преобразователь и express-graphql правильные, или есть что-то лучше альтернативы?
  • Компиляция с помощью node-gyp:
    • Требуются ли какие-либо дополнительные настройки в файлеbinding.gyp для поддержки изменений в cppgraphqlgen 4.5.8?
    Вспомогательные файлы:
    Вот файлы проекта для справки:
    • main.cpp
      [img]https:// i.sstatic.net/yk2kMXj0.jpg[/img]
    • GreetImpl.h
      Изображение
    • GreetImpl.cpp
      [img]https://i .sstatic.net/TM2p7mEJ.jpg[/img]
    • schema.greet.graphql
      Изображение
    • binding.gyp
      [img]https://i .sstatic.net/xFsqmJXi.png[/img]


    Подробнее здесь: https://stackoverflow.com/questions/792 ... nd-graphiq
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Graphiql не работает из-за безопасности – Spring для GraphQL
    Гость » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Гость
  • Почему настройка связанного списка Node Node Node на Null также не влияет на узел, на который он указывал?
    Anonymous » » в форуме JAVA
    0 Ответы
    84 Просмотры
    Последнее сообщение Anonymous
  • Регулярное обновление Excel с помощью надстройки C#.
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Поле Azure Document Intelligence C# SDK поддержки поддержки?
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Обновление версии объекта не выполняется в тесте интеграции JPA при использовании @Transactional и @Rollback.
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»