Expressjs маршруты с графиком йоги - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь создать простой api на своем бэкэнде, используя graphql-yoga. У меня есть два файла: index.js, где вызывается файл маршрута и инициализируется graphql-yoga, а сервер работает; и второй файл, routes.js, где определяются все другие маршруты API. При доступе к любому URL-адресу non graphql в браузере с действительным ключом API, например: mylocalhost.tld/anything?api_key=randomValues, я могу получить доступ к ресурсам без каких-либо сообщений об ошибках. Но при доступе к маршруту graphql, например: mylocalhost.tld/graphql?api_key=randomValues я получаю Not Found обратную связь. Когда я закомментирую routes(app); в index.js и получу доступ mylocalhost.tld/graphql/(*), где (*) может быть игровой площадкой, я получу доступ к ресурсам graphql.

Так что мне нужна помощь, чтобы иметь возможность получить доступ к mylocalhost.tld/graphql/(*) без получения сообщения об ошибке 404.

index.js

     /**
     * index.js
     */

    // graphql
    import { GraphQLServer } from 'graphql-yoga';
    import graphql from '../graphql/schema';

    // other imports
    import routes from './routes';
    import os from 'os';


    // host
    const host = "http://" + (process.env.NODE_ENV === 'production' ? os.hostname() : "localhost");
    const port = process.env.PORT || 3060;


    // options
    const opts = {
        endpoint: '/graphql',
        port: port,
        tracing: true,
        playground: '/graphql/playground',
        cors: {
        origin: [host + ":3000"] // your frontend url.
      },
    }

    // context
    const context = (req) => ({
      req: req,
    });

    // server
    const server = new GraphQLServer({
        schema: graphql,
        // Align with behavior from express-graphql
        context: context,
    });

    // express
    const app = server.express;

    //Routes "./routes.js"
    routes(app);



    /**
     * Start server
     */
    server.start(opts, () => console.log(
        'Server listening at %s:%s in %s environment. \n',
        host,
        port,
        app.set('env'),
        ),
    );

    export default app;

    // ------------------------------------------------------------------ //

routes.js

    /**
     * routes.js
     */

    import authApi from '../lib/api';


    export default (app) => {



      app.use('*', authApi); // this lets all routes request for a valid api key before delivering resources

      /**
       * Extract GraphQL API Key
       */
      app.use('/graphql/:api_key?', (req, res, next) => {
        req.api_key = req.params.api_key;
        next();
      });

    }; // end of app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...