GraphQL : a data query language

김가영·2021년 4월 1일
0

Node.js

목록 보기
25/34
post-thumbnail

공식문서

GraphQL?

GraphQL = Graph Query Language

API 구성을 위한 서버측 런타임(컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태-위키백과)

REST 에서는 여러 endpoint 를 통해 자원을 구분하였지만 GraphQL 에서는 하나의 endpoint에서 클라이언트가 필요한 것을 쿼리를 통해 직접 요청한다.

시작하기(express)

npm install express express-graphql graphql

var express = require('express');
var { graphqlHTTP } = require('express-graphql');
var { buildSchema } = require('graphql');

// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
  type Query {
   quoteOfTheDay: String
   random: Float!
   rollThreeDice: [Int]   
  }
`);

// The root provides a resolver function for each API endpoint
var root = {
  hello: () => {
    return 'Hello world!';
  },
};

var app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');

resolver

resolver 는 Schema에서 field 나 Type의 값을 결정하는 함수로 Object 나 스칼라 값을 return 한다.
Object 이 return 되면 계속해서 child field 값을 찾아가고, 스칼라이거나 null일경우 검색을 멈춘다.

Types

var schema = buildSchema(`
  type Query {
    id : ID
    s: String
    f: Float!
    i: [Int]
    b : Boolean   
  }
`);

https://graphql-kr.github.io/graphql-js/passing-arguments/

profile
개발블로그

0개의 댓글