Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임입니다.
런타임이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경
이다.
Node.js는 JavaScript 프로그램을 실행할 수 있는 환경이자 실행기이다.
서버
를 만들 수 있게 되었다.✔ yarn command
- yarn init
- package.json 생성 (= properties file)
- "type" : "modules" 추가
- yarn add express
- npm(외부 라이브러리 저장소)에서 yarn(/npm)을 통해 express 모듈 가져오기
- node_modules 생성
- yarn.lock 생성
✔ Routing
URL or HTTP 요청 메소드 등 특정 엔드포인트에 대한 클라이언트 요청에 application이 응답하는 방법을 결정하는 것이다.
app.METHOD(Path, Handler_function)
✔ Handler function
app.use(express.json())
추가)스웨거는 REST API를 쉽게 문서화 & 테스트 할 수 있도록 도와주는 도구이다.
프론트앤드와 협업에서 Spectation 안내서?지침서와 같은 역할을 한다.
Node.js로 만든 API를 스웨거와 연결하기 위해선 사전에 설치가 필요한 모듈이 2가지
✔ npm 설치 모듈s
- swagger-ui-express
- swagger-jsdoc
✔ Swagger 문서를 만들기 위한 준비
- swagger-ui-express
API 설명이 적힌 파일(@openapi : annotation based)을 넘겨주면 swagger view page사이트(postman과 같은 역할을 하는)를 만들어 준다.- swagger-jsdoc
'Annotation + 주석' ==> Docs 만들어 준다.
import swaggerUi from "swagger-ui-express"
import swaggerJSDoc from "swagger-jsdoc"
import { options } from "./swagger/config.js"
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerJSDoc(options)))
//view Docs by "http://<app_host>:<app_port>/api-docs"
@openapi(swagger)를 문서로 만들어서 ui-express에 보내주고 swagger-ui-express는 이를 기반으로 "http://<app_host>:<app_port>/api-docs" ViewPage(사이트)를 만들어준다.
yarn add apollo-server graphql
ApolloServer는 GraphQL서버 인스턴스를 만들어주는 생성자이고, gql은 자바스크립트로 GraphQL 스키마를 정의하기 위해 사용되는 템플릿 리터럴 태그이다.
typeDefs 변수에 gql을 이용하여 GraphQL 스키마 타입을 정의하고, resolvers 변수에 GraphQL 스키마를 통해 제공할 데이터를 정의하는 함수를 담은 객체를 할당한다.
✔ import ApolloServer, gql
✔ TypeDef: 스키마 정의
✔ Resolver: function 매핑(fetchBoards/createBoard..)
✔ Apolloserver로 GraphQL서버 인스턴스 생성 + typeDefs/resolver 주입
✔ listener: port 설정
간단예시
참고 | 사용자 정의? type은 따로 type 선언을 해주고 사용가능하다.
fetchBoard로 간단하게 json 데이터를 내려주는 api이고 이를 GrapQL 서버에서 실행하면 아래와 같이 실행된다.