How to build a GraphQL API Gateway with Nodejs
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
add a comment |
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
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
add a comment |
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
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
node.js api graphql microservices api-gateway
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
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
add a comment |
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
add a comment |
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
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
answered Jan 2 at 9:25
Harshit PantHarshit Pant
1237
1237
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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