1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| const express = require('express'); const {buildSchema} = require('graphql'); const graphqlHTTP = require('express-graphql');
const schema = buildSchema(` input AccountInput { name: String age: Int sex: String department: String } type Account { name: String age: Int sex: String department: String } type Mutation { createAccount(input: AccountInput): Account updateAccount(id: ID!, input: AccountInput): Account } type Query { accounts: [Account] } `);
const fakeDb = {};
const root = { accounts() { var arr = []; for(const key in fakeDb) { arr.push(fakeDb[key]) } return arr; }, createAccount({input}) { fakeDb[input.name] = input; return fakeDb[input.name]; }, updateAccount({id, input}) { const updatedAccount = Object.assign({}, fakeDb[id], input); fakeDb[id] = this.updatedAccount; return updatedAccount; } }
const app = express();
const middleware = (req, res, next) => { if(req.url.indexOf('/graphql') !== -1 && req.headers.cookie.indexOf('auth') === -1) { res.send(JSON.stringify({ error: "您没有权限访问这个接口" })); return; } next(); }
app.use(middleware);
app.use('/graphql', graphqlHTTP({ schema: schema, rootValue: root, graphiql: true }))
app.listen(3000);
|