실전! 빠르게 Nest.js를 익혀야 한다

지송·2023년 11월 24일
0

안녕하세요~
지금부터 여섯시간 동안 빠르게 nest.js를 익히기 위해 글을 작성하기 시작했습니다
저는 express만 공부해 봤을 뿐...
진심 하낫또! 모르는 상태인데요
내일부터 하는 해커톤에서 nest.js를 사용하기로 해서
발등에 불이 붙었습니다
지금부터 고

사용하려면?

노드 다운 -> http://nodejs.ort/ko/download

프로젝트 생성 -> npm i -g @nestjs/cli

프로젝트 초기화 -> nest new 원하는-이름
설치 중 패키지 매니저는 무난하게 npm 선택하기

프로젝트 실행 -> npm run start:dev
main.ts 파일을 보면 포트 3000에서 작동하도록 설정돼 있음

타입스크립트 찍먹

변수 선언 => [선언 키워드] [변수명] : [타입]

선언 키워드 => const, let, var
const : 선언 후 재할당 불가능
var: 선언 후 재할당 가능, 변수를 사용한 후 선언 가능
let: 선언 후 재할당 가능, 변수를 사용한 후 선언 불가능

자료형 => boolean, null (유효하지 않음), undefined (선언 후 값이 할당되지 않음), number (정수 & 실수), bigint, string, symbol

객체 타입 => 데이터 컬렉션

const dexter = {
	name : 'Dexter Han',
    age: 21,
}

내장 객체의 경우 Date, 배열, 키를 가진 컬렉션 (Map, WeakMap, Set, WeakSet, Json) 등이 있음

함수 타입 => typeof func === "function"

특수 타입 => any, unknown, never
any: 어떠한 타입의 값도 받을 수 있는 타입
unknown: 어떠한 타입도 할당 가능하지만 다른 변수에 할당 또는 사용할 때 타입 강제
never: 어떤 값도 할당 불가

타입 정의 =>

interface User {
	name: string;
    age: number;
}

const user: User = {
	name: 'Dexter',
    age: 21,
}
type MyUser = user;

타입 구성하기 => 유니언 타입, 제네릭 타입
인지만 하고 넘어가는 걸로

데커레이터

자바의 애노테이션과 같은 기능

  • 클래스 데커레이터
  • 메서드 데커레이터
  • 접근자 데커레이터
  • 속성 데커레이터
  • 매개변수 데커레이터

다시 돌아가서 컨트롤러

컨트롤러 생성
cd 프로젝트-이룸
nest g controller Users => Users 리소스 생성
nest g resource 이름 => 코드 자동 생성
이렇게까지 할 필요는 없을 듯

라우팅
app.controller.ts
@Controller가 붙어서 컨트롤러 역할
@Get('/hello') 로 http://링크/hello 시 접속 가능
@Controller('app') 식으로 app/hello에서 받기 가능

요청 객체
@Get()
getHello(@Req() req: Request) : string {
console.log(req);
return this.appService.getHello();
}
dhldpeh @Query(), @Param, @Body() 사용 가능

응답

@Get()
findAll(@Res() res) {
	const users = this.usersService.findAll()
    return res.status(200).send(users);
}


@HttpCode(202)
@Patch(':id')
update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
	return this.usersService.update(+id, updateUserDto);
}

파라미터 받고 바디를 DTO 통해서 받았다

라우트 매게변수

@Delete(':userId/memo/:memoId')
deleteUserMemo(
	@Param('userId') userId: string,
    @Param('memoId') memoId: string,
) {
	return 'userId: ${userId}, memoId: ${memoId}';
 }

페이로드 다루기

export class CreateUserDto {
	name: string;
    email: string;
}

@Post()
create(@Body() createUserDto: CreateUserDto) {
	const { name, email } = createUserDto;
    return: '유저를 생성했습니다. 이름: ${name}, 이메일: ${email}';
}

총정리
nest g co 컨트롤러이름
후에 구현한다~

https://github.com/dextto/book-nestjs-backend/blob/main/examples/ch3-controller/src/users/users.controller.ts

링크 참고

프로바이더

앱이 제공하고자 하는 핵심 기능 비즈니스 로직을 수행하는 역할

프로바이더 생성
nest g s 이름

글 쓰면서 기본적인 틀은 잡힌 것 같아서 급 중단...

profile
💻 늘 공부하고 발전하는 개발자

0개의 댓글