首页 > 其他 > 详细

[GraphQL] Serve a GraphQL Schema as Middleware in Express

时间:2016-12-29 16:37:22      阅读:305      评论:0      收藏:0      [点我收藏+]

If we have a GraphQL Schema expressed in terms of JavaScript, then we have a convenient package available to us that let’s us easily serve up our schema on any endpoint in an Express Server. In this video, we’ll use the express-graphql package to serve up our GraphQL Schema as middleware, and also learn how to enable the GraphiQL tool in order to query our GraphQL Schema.

 

Install:

yard add express express-graphql graphql

 

const express   = require(express);
const graphqlHttp = require(express-graphql);

const server = express();
const port   = process.env.PORT || 3000;

const { graphql, buildSchema } = require(graphql);

const schema = buildSchema(`
    type Video {
        id: ID,
        title: String,
        duration: Int,
        watched: Boolean
    }
    
    type Query {
        video: Video,
        videos: [Video]
    }
    
    type Schema{
        query: Query
    }
`);

const videos = [
    {
        id       : 1,
        title    : react,
        duration : 180,
        watched  : true
    },
    {
        id       : 2,
        title    : relay,
        duration : 230,
        watched  : false
    }
];

const resolvers = {
    video  : () => ({
        id       : 1,
        title    : bar,
        duration : 180,
        watched  : true
    }),
    videos : () => videos
};

server.use(/graphql, graphqlHttp({
                                     schema,
                                     graphiql  : true, // use graphiql interface
                                     rootValue : resolvers
                                 }));

server.listen(port, () => {
    console.log(`Listening on http`)
})

 

We use ‘graphql‘ middleware, once we visit http://localhost:3000/graphql and enter the query:

{
  videos {
    id
    title
    duration
    watched
  }
}

Then we can get the result.

 

技术分享

[GraphQL] Serve a GraphQL Schema as Middleware in Express

原文:http://www.cnblogs.com/Answer1215/p/6233404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!