Nest.JS & graphQl

๊น€๋ฏผ์žฌยท2021๋…„ 11์›” 27์ผ
0

Nest.JS & graphQl

๋ชฉ๋ก ๋ณด๊ธฐ
1/7

*๐Ÿ”Study Keyword :

๐Ÿ”‘Nest.JS์—์„œ ๐Ÿ—๏ธgraphQl์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€

1. nest.JS App ์ƒ์„ฑ Flow

1.nest g application

  • nest.js app ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ช…๋ น์–ด
    2.? What name would you like to use for the new project?
  • ํ”„๋กœ์ ํŠธ ๋ช… ์ž…๋ ฅ
  1. npm i
    -package.json์— ์ž‘์„ฑ๋œ ํŒจํ‚ค์ง€ ๋ชจ๋‘ ํŽ˜์น˜

2. Git Hub Repository ์ƒ์„ฑ

  • ๊นƒ ์—ฐ๊ฒฐ
    -git init
    -git remote add origin <git url>
    -๋ช…๋ น์–ด ํŒ”๋ ˆํŠธ, gitignore => node ๊ฒ€์ƒ‰, ignore ํŒŒ์ผ ์ƒ์„ฑ
    -add, commit, push ํ•˜์—ฌ main ๋ธŒ๋žœ์น˜ ์˜ฌ๋ฆฌ๊ธฐ
    -์ž‘์—… ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (issue#1)

3. nestjs/graphql ์„ค์น˜ ๋ฐ nestJS ๊ตฌ์กฐ

์ƒ์„ฑ๋œ ์ดˆ๊ธฐ ํด๋” ๊ตฌ์กฐ

WHAT ISโ“

3_1. nestjs/graphql ์„ค์น˜

npm i @nestjs/graphql graphql apollo-server-express

  • nestjs/graphql์€ nest.js๋งŒ์˜ ๋ฐฉ์‹์œผ๋กœ apollo-server-express๋ฅผ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ž‘๋™ํ•œ๋‹ค.

3_2. app.module

import { Module } from '@nestjs/common';
@Module({
 imports: [],
 controllers: [],
 providers: [],
})
export class AppModule {}
  • main.ts๋กœ import๋˜๋Š” ์œ ์ผํ•œ ๋ชจ๋“ˆ์ด๋‹ค,

3_3. main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
  • app์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ
  • NestFactory๊ฐ€ AppModule๋กœ ๋ถ€ํ„ฐ app์„ ์ƒ์„ฑํ•œ๋‹ค.
  • ๊ฒฐ๊ตญ, ๋ชจ๋“  ๊ฑด AppModule๋กœ import๋œ๋‹ค.
    EX> ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , GraphGL, User ๋“ฑ
  • ๋”ฐ๋ผ์„œ AppModule์— GraphGL ๋ชจ๋“ˆ ์—ญ์‹œ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.

HOW TO USEโ•โ“ GraphGL ๋ชจ๋“ˆ

GraphQLModule.forRoot()

  • forRoot()๋Š” root module์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋กœ ์ด ๊ฒฝ์šฐ GraphQL์ด forRoot์— ํ•ด๋‹น๋œ๋‹ค.
  • Apollo Server requires either an existing schema, modules or typeDefs
  • ์ด๋Š” Apollo ์„œ๋ฒ„๊ฐ€ schema, modules ๋˜๋Š” typeDefs ์ค‘ ํ•˜๋‚˜๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
    => ์ฆ‰, GraphQL ์„œ๋ฒ„๋Š” ์•„๋ฌด๋Ÿฐ ์ •๋ณด ์—†์ด ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.
    => GraphQL ์„œ๋ฒ„๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ 1>resolver์™€ 2>GraphQL Schema๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค.

*๐Ÿ’กconclusion

nest.js์™€ graphQL์ด ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์ตํ˜€๋‘์ž.

#๐Ÿ“‘Study Source

  • ๋‹ˆ๊ผด๋ผ์Šค ์Œค์˜ ์šฐ๋ฒ„์ด์ธ  ๊ฐ•์˜ ์ค‘
profile
์ž๊ธฐ ์‹ ๋ขฐ์˜ ํž˜์„ ๋ฏฟ๊ณ  ์‹ค์ฒœํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€