nest js 15

NestJs JWT 토큰 생성 / 토큰 인증(Guard)

이전에 로그인 / 로그아웃을 구현하지 않으셨다면 아래의 포스팅을 봐주세요! https://develop-const.tistory.com/22 NestJs 회원가입(비밀번호 암호화), 로그인 구현하기 인증관련부분은 다음시간에 구현하고, 먼저 회원가입과 로그인기능에 대해 구현해보겠습니다. auth와 user 파일을 간단하게 생성 nest g resource auth nest g resource user user [ user/entities/user.entitiy.ts ] impor develop-const.tistory.com 토큰을 사용해 api 호출하는 흐름 1. 클라이언트는 서버에 로그인 요청을 합니다. 2. email과 password가 맞는지 검증한후 맞다면 access 토큰을 발급해 전달합니다 3..

nest js 2023.04.14

NestJs 회원가입(비밀번호 암호화), 로그인 구현하기

인증관련부분은 다음시간에 구현하고, 먼저 회원가입과 로그인기능에 대해 구현해보겠습니다. auth와 user 파일을 간단하게 생성 nest g resource auth nest g resource user user [ user/entities/user.entitiy.ts ] import { BeforeInsert, Column, CreateDateColumn, DeleteDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import * as bcrypt from 'bcrypt'; @Entity({ name: 'user' }) export class UserEntity { @PrimaryGeneratedColumn(..

nest js 2023.04.14

NestJs에서 환경변수

환경변수 분리하기 환경변수는 보안상 중요한 정보(예: 데이터베이스 비밀번호)를 포함할 수 있기 때문에, 애플리케이션 코드와 분리하여 관리하는 것이 좋습니다. 이를 통해 코드를 외부에 노출하지 않고 보안성을 높일 수 있습니다 1. @nestjs/config 패키지 설치하기 @nestjs/config는 Nest.js에서 환경 변수를 쉽게 처리할 수 있도록 도와주는 패키지입니다. 이 패키지를 사용하면 .env 파일 이외에도, CLI 인자, 환경변수, JSON 파일, YAML 파일, JS 파일 등 다양한 방법으로 설정값을 제공할 수 있습니다. npm i @nestjs/config 2. env 파일작성하기 # Database DB_HOST='localhost' DB_PORT=3306 DB_USERNAME='roo..

nest js 2023.04.13

NestJs 데이터베이스 연동하기 (mysql, typeorm)

🌈 NestJs에서 typeORM을 사용하는 이유는? 통합성: NestJS는 TypeScript 기반의 프레임워크로, TypeORM은 TypeScript 및 JavaScript에서 사용할 수 있는 ORM입니다. 이 두 기술의 통합성이 높아, NestJS에서 TypeORM을 사용하면 일관된 개발 경험을 제공합니다. 객체 지향 프로그래밍: TypeORM은 데이터베이스 테이블을 클래스로 모델링하여 객체 지향 프로그래밍을 가능하게 합니다. 강력한 쿼리 빌더: TypeORM은 쿼리 빌더를 제공하여 복잡한 쿼리를 직관적인 방식으로 작성할 수 있습니다. 이를 통해 SQL 쿼리를 직접 작성하지 않아도 되며, 코드의 가독성과 유지 관리성이 향상됩니다. 데코레이터 및 메타데이터: TypeORM은 데코레이터를 활용하여 엔티..

nest js 2023.04.12

NestJs 프로젝트에서 Swagger 사용하기

https://swagger.io/ API Documentation & Design Tools for Teams | Swagger Loved by all • Big & Small Thousands of teams worldwide trust Swagger to deliver better products, faster. swagger.io 프로젝트가 커질수록, 팀 프로젝트를 할수록 문서화하는것은 매우 중요하다. REST API 수가 많아질수록, 팀원들과 소통하기 위해 문서화 작업은 필수입니다. 문서화 작업을 위한 swagger 우리함께 배워봅시다. 😊 🤷 Swagger란? API 설계와 문서화를 위한 오픈 소스 도구입니다. 이를 사용하면 개발자들이 API를 보다 쉽게 이해하고 사용할 수 있도록 문서를 작성..

nest js 2023.04.07

NestJs Guard에 대해 알아보자

Guard란? guard는 요청의 처리 여부를 결정하는 미들웨어 역할을 합니다. guard는 인증과 권한 부여 등 요청에 대한 검사를 처리하는 데 주로 사용합니다. guard는 @nestjs/common의 CanActivate 인터페이스를 확장하는 클래스로 구현됩니다. 이 인터페이스는 canActivate라는 단일 메서드를 정의하며, 이 메서드는 ExecutionContext 객체를 인수로 취하고 요청이 진행되어야 하는지 여부를 나타내는 부울 값을 반환합니다. 예를 들어, 아래 코드에서는 JWT 토큰을 가져와 인증 여부를 판단하고, 인증되지 않은 요청은 거부합니다. @Injectable() export class AuthGuard implements CanActivate { constructor( pri..

nest js 2023.04.07

NestJs Custom decorator에 대해 알아보자

nestjs에서 데코레이터는 애플리케이션의 모듈, 컨트롤러, 서비스 등의 클래스와 메서드에 붙일 수 있는 기능적인 어노테이션입니다. 앞서 배운 @body @param~ 등이 데코레이터입니다. 데코레이터는 클래스와 메서드에 메타데이터를 추가하거나 애플리케이션을 자동으로 구성하기 위해 사용될 수 있습니다. 커스텀 데코레이터란? 커스텀 데코레이터는 직접 만든 데코레이터로 nestjs에서 제공하는 데코레이터 외에도 자신이 원하는 기능을 구현하기 위해 만들어진것입니다. import { createParamDecorator, ExecutionContext } from '@nestjs/common'; export const User = createParamDecorator( (data: unknown, ctx: Ex..

nest js 2023.04.07

NestJs custom pipe 에 대해 알아보자

사용자 정의 Pipe 사용자 정의 파이프는 다양한 용도로 사용될 수 있습니다. 예를들어, 입력 데이터의 유효성검사, 데이터 변환, 비즈니스 로직 처리 등이 가능합니다. 이에 따라 파이프 로직도 다양하게 작성될수도 있습니다. 사용자 정의 파이프를 만드려면 PipeTransform 인터페이스를 구현하는 클래스를 작성해야합니다. PipeTransform 인터페이스는 transform() 메소드를 정의합니다. 이 메소드는 파이프가 변환하거나 검증할 값을 입력으로 받고 변환된 값을 반환합니다. 아래는 예시코드입니다. 직접구현하여도 되지만 cli를 통해 간단하게 파이프를 생성합니다. nest g pi my import { ArgumentMetadata, Injectable, PipeTransform } from '..

nest js 2023.04.06

NestJs Pipe에 대하여 알아보자

파이프란? 파이프의 경우에 두가지 사용 사례가 있습니다. 변환 : 입력 데이터를 원하는 형식으로 변환(예: 문자열에서 정수로) validation : 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달합니다. 그렇지 않으면 예외를 throw합니다. 빌드인 파이프와 바인딩 파이프 빌트인 파이프는 NestJS 프레임워크에서 제공하는 파이프입니다. 예를 들어 ValidationPipe ParseIntPipe ParseFloatPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe ParseEnumPipe DefaultValuePipe ParseFilePipe 바인딩 파이프는 라우트 핸들러에 파이프를 바인딩하는 것을 의미합니다. 예를 들어 다음과 같이 작성할 수 있습니다..

nest js 2023.04.06

NestJs 미들웨어

미들웨어란? 미들웨어는 http요청과 응답사이 즉 라우터 핸들러 이전에 호출되는 함수 입니다. 다시말해서 클라이언트 요청을 라우터 핸들러가 받기전에 가로채서 다른작업을 수행할 수 있습니다. 다음과 같은 특징들이 있습니다. 요청에 대한 검증, 로깅, 인증, 권한 체크, 캐싱 등의 작업을 수행 할 수 있습니다. 다수의 미들웨어 등록을 통해 다양한 작업을 순차적으로 처리할 수 있습니다. next 함수 호출을 통해 미들웨어 체인을 연결합니다. next 함수를 호출하면 다음 미들웨어가 실행되며, 호출하지 않으면 다음 미들웨어가 실행되지 않습니다. NestJS는 전역 미들웨어(Global Middleware)와 로컬 미들웨어(Local Middleware)를 지원합니다. 전역 미들웨어는 모든 요청과 응답에 적용되며..

nest js 2023.04.06