GraphQL-예제

이 장에서는 인사 메시지 HelloWorld를 반환하고 GraphiQL을 사용하여 액세스하는 간단한 API를 생성합니다.

이 예제는 NodeJS, Express 및 Apollo 서버를 기반으로합니다. 우리는 다음 단계를 통해 모든 개념을 결합하는 방법을 배웁니다.

1 단계-Express 설정

ExpressJS는 웹 사이트와 웹 애플리케이션을 구축하는 데 도움이되는 웹 애플리케이션 프레임 워크입니다. 이 예에서는 Express 프레임 워크 위에 GraphQL API를 빌드합니다.

다음 단계는 폴더를 만드는 것입니다. hello-world-server터미널에서 동일한 폴더로 이동합니다. package.json을 추가하고 패키지에 이름을 지정하십시오. 이 패키지는 내부적으로 만 사용되므로 비공개로 선언 할 수 있습니다.

{
   "name":"hello-world-server",
   "private":true
}

아래와 같이 Express 서버에 대한 종속성을 설치하십시오-

C:\Users\Admin\hello-world-server>npm install express body-parser cors

body-parser 는 Express가 HTTP Post 요청을 효율적으로 처리하도록 도와주는 미들웨어 패키지입니다. cors 는 교차 출처 리소스 공유를 처리하는 또 다른 미들웨어 패키지입니다.

만들기 server.js 프로젝트 폴더에 파일을 넣고 다음을 입력하십시오-

const bodyParser = require('body-parser')
   const cors = require('cors')
   const express = require('express')
   const port = process.env.PORT|| 9000
   const app = express()
   
   //register middleware
   app.use(bodyParser.json() , cors())
   app.listen(port, () =>  console.log(`server is up and running at ${port}`)

Express 서버가 실행 중인지 확인하려면 터미널 창에서 다음 코드를 실행하십시오.

C:\Users\Admin\hello-world-server>node server.js

다음 출력이 서버 콘솔에 표시됩니다. 이는 익스프레스 서버가 포트 9000에서 실행 중임을 나타냅니다.

server is up and running at 9000

브라우저를 열고 다음을 입력하면 http://localhost:9000, 다음 화면이 표시됩니다-

서버를 중지하려면 Ctrl + C.

2 단계-GraphQL 및 Apollo 서버 설치

이제 Express가 구성되었으므로 다음 단계는 다음 GraphQL 종속성을 다운로드하는 것입니다.

  • graphql
  • graphql-tools
  • apollo-server-express@1

안정적인 릴리스이므로 Apollo 서버 v1.0을 사용할 것입니다. 이러한 종속성을 설치하려면 다음 명령을 입력하십시오-

C:\Users\Admin\hello-world-server>npm install graphql graphql-tools apollo-server-express@1

이러한 종속성이 성공적으로 설치되었는지 확인할 수 있습니다. package.json 이전에 만든 파일입니다.

{
   "name": "hello-world-server",
   "private": true,
   
   "dependencies": {
      "apollo-server-express": "^1.4.0",
      "body-parser": "^1.18.3",
      "cors": "^2.8.4",
      "express": "^4.16.3",
      "graphql": "^0.13.2",
      "graphql-tools": "^3.1.1"
   }
}

3 단계-스키마 정의

GraphQL 스키마는 서비스에서 가져올 수있는 개체의 종류와 포함 된 필드를 정의합니다. 스키마는 다음을 사용하여 정의 할 수 있습니다.GraphQL Schema Definition Language. 이제 다음 코드 스 니펫을server.js 파일-

// Adding Type Definitions
const typeDefinition = `
   type Query  {
      greeting: String
   }

여기서 쿼리에는 문자열 값 을 반환하는 인사말 속성이 포함되어 있습니다 .

4 단계-리졸버 생성

리졸버를 만드는 첫 번째 단계는 인사말 필드에 대한 요청을 처리하는 코드를 추가하는 것입니다. 이것은resolver. 해석기 함수의 구조는 스키마와 일치해야합니다. 다음 코드 조각을server.js 파일.

// Adding resolver
const  resolverObject = {
   Query : {
      greeting: () => 'Hello GraphQL  From TutorialsPoint !!'
   }
}

두 번째 단계는 다음을 사용하여 스키마와 리졸버를 바인딩하는 것입니다. makeExecutableSchema. 이 함수는 graphql-tools 모듈에 미리 정의되어 있습니다. 다음 코드 조각을 server.js 파일.

const {makeExecutableSchema} = require('graphql-tools')
const schema = makeExecutableSchema({typeDefs:typeDefinition, resolvers:resolverObject})

5 단계-ReactJS / GraphiQL 애플리케이션에서 데이터를 가져 오는 경로 정의

다음 코드 조각을 server.js 파일-

const {graphqlExpress, graphiqlExpress} = require('apollo-server-express')

   //create routes for graphql and graphiql
   app.use('/graphql',graphqlExpress({schema}))
   
   app.use('/graphiql',graphiqlExpress({endpointURL:'/graphql'}))

graphqlExpress의 기능은 경로를 등록하는 데 도움이http://localhost:9000/graphql. ReactJS 애플리케이션은이 끝점을 사용하여 데이터를 쿼리 할 수 ​​있습니다. 마찬가지로 graphqliExpress 함수는 경로를 등록하는 데 도움이됩니다.http://localhost:9000/graphiql. 이는 GraphiQL 브라우저 클라이언트에서 API를 테스트하는 데 사용됩니다.

완전한 server.js 코드는 다음과 같습니다.

const bodyParser = require('body-parser')
const cors = require('cors')
const express = require('express')
const port = process.env.PORT||9000
const app = express()

app.use(bodyParser.json() , cors())
const typeDefinition = `
type Query  {
   greeting: String
}`
const  resolverObject = {
   Query : {
      greeting: () => 'Hello GraphQL  From TutorialsPoint !!'
   }
}
const {makeExecutableSchema} = require('graphql-tools')

const schema = makeExecutableSchema({typeDefs:typeDefinition, resolvers:resolverObject})

const {graphqlExpress,graphiqlExpress} = require('apollo-server-express')

app.use('/graphql',graphqlExpress({schema}))
app.use('/graphiql',graphiqlExpress({endpointURL:'/graphql'}))
app.listen(port, () =>  console.log(`server is up and running ${port}`))

6 단계-애플리케이션 시작

실행 server.js 다음과 같이 Node.js 사용-

C:\Users\Admin\hello-world-server>node server.js

7 단계-GraphQL API 테스트

브라우저를 열고 입력하십시오. http://localhost:9000/graphiql. GraphiQL의 쿼리 탭에서 다음을 입력하십시오.

{
   greeting
}

서버의 응답은 다음과 같습니다.

{
   "data": {
      "greeting": "Hello GraphQL From TutorialsPoint !!"
   }
}

다음 이미지는 응답을 보여줍니다-

Note − Apollo Server 버전 1.0을 사용하고 있는지 확인하십시오.