How to build a GraphQL API Gateway with Nodejs












-1















Suppose I have N numbers of Microservice which are serving GraphQL API and I want to build a API Gateway for them with GraphQL.



So the communication would go like this :



Client sends a request in the form of JSON like



{
User{
name
}
Article(id: "sa"){
title
}
}


API Gateway takes this input and forwards it to different microservices such as the User related query will go to User Microservice and Article related query will go to Article Microservice.



User{
name
}


// Call to User Microservice



Article{
title
}


// Call to Article Microservice



I am not sure how to implement this with GraphQL and Nodejs.










share|improve this question























  • You should only use one GraphQL server which acts as the gateway that called to individual services apollographql.com/docs/images/graph-layer.png

    – xwlee
    Jan 2 at 8:24













  • But how it would serve the purpose of Microservice? We have to define the whole schema thing in API Gateway for each Microservices and also adding only one property in any Microservice would push us to change the schema at API Gateway also.

    – Shreyansh Mehta
    Jan 2 at 8:33
















-1















Suppose I have N numbers of Microservice which are serving GraphQL API and I want to build a API Gateway for them with GraphQL.



So the communication would go like this :



Client sends a request in the form of JSON like



{
User{
name
}
Article(id: "sa"){
title
}
}


API Gateway takes this input and forwards it to different microservices such as the User related query will go to User Microservice and Article related query will go to Article Microservice.



User{
name
}


// Call to User Microservice



Article{
title
}


// Call to Article Microservice



I am not sure how to implement this with GraphQL and Nodejs.










share|improve this question























  • You should only use one GraphQL server which acts as the gateway that called to individual services apollographql.com/docs/images/graph-layer.png

    – xwlee
    Jan 2 at 8:24













  • But how it would serve the purpose of Microservice? We have to define the whole schema thing in API Gateway for each Microservices and also adding only one property in any Microservice would push us to change the schema at API Gateway also.

    – Shreyansh Mehta
    Jan 2 at 8:33














-1












-1








-1








Suppose I have N numbers of Microservice which are serving GraphQL API and I want to build a API Gateway for them with GraphQL.



So the communication would go like this :



Client sends a request in the form of JSON like



{
User{
name
}
Article(id: "sa"){
title
}
}


API Gateway takes this input and forwards it to different microservices such as the User related query will go to User Microservice and Article related query will go to Article Microservice.



User{
name
}


// Call to User Microservice



Article{
title
}


// Call to Article Microservice



I am not sure how to implement this with GraphQL and Nodejs.










share|improve this question














Suppose I have N numbers of Microservice which are serving GraphQL API and I want to build a API Gateway for them with GraphQL.



So the communication would go like this :



Client sends a request in the form of JSON like



{
User{
name
}
Article(id: "sa"){
title
}
}


API Gateway takes this input and forwards it to different microservices such as the User related query will go to User Microservice and Article related query will go to Article Microservice.



User{
name
}


// Call to User Microservice



Article{
title
}


// Call to Article Microservice



I am not sure how to implement this with GraphQL and Nodejs.







node.js api graphql microservices api-gateway






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 2 at 7:46









Shreyansh MehtaShreyansh Mehta

197




197













  • You should only use one GraphQL server which acts as the gateway that called to individual services apollographql.com/docs/images/graph-layer.png

    – xwlee
    Jan 2 at 8:24













  • But how it would serve the purpose of Microservice? We have to define the whole schema thing in API Gateway for each Microservices and also adding only one property in any Microservice would push us to change the schema at API Gateway also.

    – Shreyansh Mehta
    Jan 2 at 8:33



















  • You should only use one GraphQL server which acts as the gateway that called to individual services apollographql.com/docs/images/graph-layer.png

    – xwlee
    Jan 2 at 8:24













  • But how it would serve the purpose of Microservice? We have to define the whole schema thing in API Gateway for each Microservices and also adding only one property in any Microservice would push us to change the schema at API Gateway also.

    – Shreyansh Mehta
    Jan 2 at 8:33

















You should only use one GraphQL server which acts as the gateway that called to individual services apollographql.com/docs/images/graph-layer.png

– xwlee
Jan 2 at 8:24







You should only use one GraphQL server which acts as the gateway that called to individual services apollographql.com/docs/images/graph-layer.png

– xwlee
Jan 2 at 8:24















But how it would serve the purpose of Microservice? We have to define the whole schema thing in API Gateway for each Microservices and also adding only one property in any Microservice would push us to change the schema at API Gateway also.

– Shreyansh Mehta
Jan 2 at 8:33





But how it would serve the purpose of Microservice? We have to define the whole schema thing in API Gateway for each Microservices and also adding only one property in any Microservice would push us to change the schema at API Gateway also.

– Shreyansh Mehta
Jan 2 at 8:33












1 Answer
1






active

oldest

votes


















0














You can use schema stitching to combine multiple graphql servers.
https://www.apollographql.com/docs/graphql-tools/schema-stitching.html



Use this with schema delegation: https://www.apollographql.com/docs/graphql-tools/schema-delegation.html






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54002875%2fhow-to-build-a-graphql-api-gateway-with-nodejs%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You can use schema stitching to combine multiple graphql servers.
    https://www.apollographql.com/docs/graphql-tools/schema-stitching.html



    Use this with schema delegation: https://www.apollographql.com/docs/graphql-tools/schema-delegation.html






    share|improve this answer




























      0














      You can use schema stitching to combine multiple graphql servers.
      https://www.apollographql.com/docs/graphql-tools/schema-stitching.html



      Use this with schema delegation: https://www.apollographql.com/docs/graphql-tools/schema-delegation.html






      share|improve this answer


























        0












        0








        0







        You can use schema stitching to combine multiple graphql servers.
        https://www.apollographql.com/docs/graphql-tools/schema-stitching.html



        Use this with schema delegation: https://www.apollographql.com/docs/graphql-tools/schema-delegation.html






        share|improve this answer













        You can use schema stitching to combine multiple graphql servers.
        https://www.apollographql.com/docs/graphql-tools/schema-stitching.html



        Use this with schema delegation: https://www.apollographql.com/docs/graphql-tools/schema-delegation.html







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 2 at 9:25









        Harshit PantHarshit Pant

        1237




        1237
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54002875%2fhow-to-build-a-graphql-api-gateway-with-nodejs%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Mossoró

            Error while reading .h5 file using the rhdf5 package in R

            Pushsharp Apns notification error: 'InvalidToken'