캡스톤디자인(1) - NestJS 공부 1
컴퓨터공학과 5584977 이지현
캡스톤디자인(1) TEAM 우연한 인연
주제 - 우연한 발견 (위치 기반 SNS)
담당 - 백엔드 개발
프레임워크 - NestJS 사용
공부 - nomadcoders.co 강의 사이트
#0 INTRODUCTION
#0.1 NestJS란
NestJS에는 node.js를 포함하여 다른 node.js 프레임워크에서는 없는 구조를 가지고 있다.
NestJS의 문제이자 장점은 내가 하고 싶은대로 아무렇게나 할 수 있다. 예를 들어, url을 어디에 둘 지 내가 정할 수 있음
객체지향, 함수형, 함수 반응형 프로그램 일부의 요소를 사용한다.
#0.2 NestJS로 개발하기 위하여 설치해야 할 것
- node.js
- Visual Studio Code
- insomnia core (Rest api 빌드용)
insomnia는 Rest의 client
#0.3 Project Setup
- @nestjs/cli 설치 (npm 추천)
$ npm i -g @nestjs/cli
$ nest new
[nest new -> 파일 이름 설정] 하면 설치 완료
Visual Studio Code의 terminal을 통해 github와 연결
파일 이름과 github repository를 강의와 동일하게 hi-nest로 설정하였다.
#1 ARCHITECTURE OF NESTJS
#1.1 Overview
main.ts부터 살펴보면서 localhost:3000에서 hello world가 뜨는 과정을 탐색
- npm run start:dev를 통해 npm을 실행해주고 localhost:3000으로 웹 접속

#1.2 Controllers

@Module({}) : '데코레이터'라고 부름.
Decorator(데코레이터)
- 클래스에 함수 기능을 추가할 수 있기 때문에 NestJS를 쓸 때 아주 강력한 기능이다.
- 클래스 위의 함수이고, 클래스를 위하여 움직인다.
- 아이스크림에 초콜릿 칩을 뿌리는 그런 것
NestJS는 main.ts에서 시작 -> 하나의 모듈에서 어플리케이션을 생성
AppModule은 모든 것의 root module이라고 생각하면 된다.
모듈 : 어플리케이션의 일부분 (하나의 모듈은 한 가지 역할을 하는 앱)
ex) 인스타그램에서 photo 모듈, video 모듈이 있을 수 있음
controllers : express의 라우터와 같은 역할. url을 가져오고 함수를 실행하는 역할을 한다.

@Get() 데코레이터의 ()에 url을 연결할 수 있고, url에 접속했을 때 실행할 함수를 아래에 정의해준다.
@Get("/hello")를 통해 localhost:3000/hello로 접속하면 'Hello everyone'이 나타나도록 하였다.
(@Post를 사용하면 url 접속 불가)
주의할 점 : 데코레이터와 함수 사이를 띄우지 말것!
@Decorator
function(): type {}
위의 형식대로 작성해야 한다.
