꾸크리 개발 블로그
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (58)
      • 배포 (5)
      • TypeScript (15)
      • JavaScript (1)
      • Network (2)
      • 웹 보안 (2)
      • DB (1)
      • 기타 (6)
      • NestJS (14)
      • TypeOrm (10)
      • NextJS (2)
  • 홈
  • 태그
  • 방명록
NestJS

NestJS Interceptor

NestJS 인터셉터(Interceptor)*는 요청(Request)과 응답(Response)을 가로채서 전처리 및 후처리를 수행할 수 있는 기능을 제공합니다. 인터셉터는 NestJS의 핵심 기능 중 하나로, 주로 다음과 같은 목적에 사용됩니다:공통 작업 처리: 요청 또는 응답에 대해 반복적으로 실행해야 하는 작업을 중앙에서 처리.응답 변환: 컨트롤러에서 반환된 데이터를 수정하거나 포맷팅.로그ging 및 모니터링: 요청/응답 시간 측정 및 디버깅 정보 로깅.캐싱: 이미 처리된 결과를 재사용하기 위해 응답 데이터를 캐시.인터셉터의 동작 방식인터셉터는 요청과 응답 사이의 흐름을 가로채서 다음과 같은 두 가지 단계에서 작업을 수행할 수 있습니다:전처리(Pre-processing): 요청이 컨트롤러로 전달되기 ..

2024. 11. 25. 03:25
NestJS

NestJS Pagination Common

CommonService: 페이징 로직 상세 설명CommonService는 페이지 기반 페이징과 커서 기반 페이징을 처리하며, 주어진 DTO를 통해 TypeORM의 FindManyOptions를 동적으로 생성해 데이터를 조회합니다.import { BadRequestException, Injectable } from '@nestjs/common';import { BasePaginationDto } from './dto/base-pagination.dto';import { FindManyOptions, FindOptionsOrder, FindOptionsWhere, Repository } from 'typeorm';import { BaseModel } from './entity/base.entity';imp..

2024. 11. 20. 07:04
NestJS

NestJS 페이징처리

페이징(Pagination)이란?Pagination은 많은 데이터를 한 번에 불러오는 대신 부분적으로 나눠서 가져오는 기술입니다. 이는 서버의 메모리와 네트워크 자원을 아끼고 성능을 높이는 데 큰 도움이 됩니다.Pagination의 특징모든 데이터를 한 번에 불러오는 대신 필요한 만큼만 가져오는 방식입니다.예를 들어, 쿠팡 같은 앱에는 수억 개의 상품이 있습니다. 사용자가 상품 검색을 할 때마다 모든 상품 정보를 한 번에 전송하는 것은 비효율적이며, 메모리 문제와 네트워크 비용이 발생합니다.메모리 문제: 많은 데이터를 한 번에 로드하면 메모리가 부족해질 수 있습니다.네트워크 비용: 클라우드에서는 데이터 전송에도 비용이 발생하기 때문에, 페이징을 통해 네트워크 비용도 줄일 수 있습니다.데이터를 나눠 가져오..

2024. 11. 19. 12:48
NestJS

NestJS DTO,Validation

1. 초기 방식 vs. DTO 사용 방식이전의 형태: @Body()로 각각의 필드를 개별적으로 가져오는 방식@Post('register/email')postRegisterEmail( @Body('email') email: string, @Body('password', new MaxLengthPipe(8), new MinLengthPipe(3)) password: string, @Body('nickname') nickname: string,) { return this.authService.registerWithEmail({ nickname, email, password, });}특징:모든 필드를 개별적으로 @Body()로 가져와야 함.각 필드마다 필요한 파이프(MaxLengthPi..

2024. 11. 18. 03:09
기타

Postman 토큰 자동 주입

프로젝트를 진행하다 보면 Postman을 사용해 API 테스트를 자주 하게 되는데요, 최근에 코드팩토리님의 NestJS 강의를 보다가 정말 유용한 기능을 발견했습니다. 바로 Postman을 이용해 JWT 토큰을 자동으로 관리하는 방법입니다.대부분 로그인 후 발급된 JWT 토큰을 API 요청에 사용하는 경우가 많습니다. 예를 들어 글을 작성하거나 수정, 삭제할 때마다 매번 로그인해서 받은 토큰을 헤더의 Authorization에 일일이 넣어야 했죠. 이렇게 작업하다가 토큰이 만료되면 다시 로그인해서 새로운 토큰을 복사하고, 다시 헤더에 붙여넣는 불편함을 반복했습니다.그런데, Postman에서는 이러한 과정을 자동으로 처리할 수 있다는 것을 이제야 알았습니다. 저처럼 매번 토큰을 수동으로 붙여넣기하며 테스트..

2024. 11. 17. 02:06
NestJS

NestJS 핫리로드 트러블슈팅

NestJS 핫 리로드 문제 및 ts-node-dev 사용 시 TypeORM 오류 해결문제 상황 기존 NestJS에서는 서버가 재시작될 때 포트가 이미 사용 중이라는 문제가 발생했고, 이는 핫 리로드 도중 서버가 제대로 종료되지 않고 포트가 남아 있는 상황 때문이었습니다. 이로 인해 NestJS 자체 핫 리로드 기능이 비효율적일 수 있다고 판단하게 되었습니다.기존 Express 프로젝트에서는 Nodemon을 사용해 핫 리로드 기능을 문제없이 사용했기에, NestJS 기본 핫 리로드 대신 다른 도구를 찾게 되었습니다. 그 결과, ts-node-dev라는 라이브러리를 발견하고 적용했는데, 이번엔 TypeORM 관련 오류가 발생했습니다.검색과 시도한 해결책검색을 통해 3000번 포트를 사용하는 프로세스를 찾아..

2024. 11. 16. 02:29
NestJS

NestJS Pipe

NestJS에서 Pipe는 요청 데이터의 유효성 검사(validation)와 변환(transformation)을 위해 사용되는 강력한 도구입니다. Pipe는 요청이 처리되기 전에 데이터의 형식을 변경하거나 유효성을 검증하는 데 주로 사용됩니다. 예를 들어, 클라이언트에서 받은 데이터를 특정 형식으로 변환하거나 특정 조건에 맞는지 확인하는 데 활용할 수 있습니다.Pipe의 역할데이터 변환 (Transformation) Pipe는 클라이언트가 보내온 데이터를 컨트롤러에서 사용할 수 있도록 변환합니다. 예를 들어, 문자열로 받아온 데이터를 숫자로 변환하는 등의 작업을 할 수 있습니다.데이터 유효성 검사 (Validation) 데이터가 올바른 형식인지, 특정 조건을 만족하는지 검증합니다. 예를 들어, 이메일 형..

2024. 11. 15. 16:26
NestJS

회원가입로직

회원가입 로직 설명1. postRegisterEmail 메서드 (컨트롤러)@Post('register/email')postRegisterEmail( @Body('email') email: string, @Body('password') password: string, @Body('nickname') nickname: string,) { return this.authService.registerWithEmail({ nickname, email, password, });}postRegisterEmail 메서드는 회원가입 요청을 처리하는 엔드포인트입니다.요청 바디에서 email, password, nickname 값을 받아 authService.registerWithEmail로 전달합니..

2024. 11. 14. 02:09
기타

Refresh Token & Access Token

두 토큰 모두 JWT 기반이다.Access Token은 API 요청을 할때 검증용 토큰으로 사용된다. 즉, 인증이 필요한 API를 사용할때는 꼭 Access Token을 Header에 넣어서 보내야한다.Refresh Token은 Access Token을 추가로 발급할때 사용된다. Access Token을 새로고침(Refresh)하는 기능이 있기 때문에 Refresh Token이라고 부른다.Access Token은 유효기간이 짧고 Refresh Token은 유효기간이 길다.자주 노출되는 Access Token은 유효기간을 짧게해서 Token이 탈취되도 해커가 오래 사용하지 못하도록 방지할 수 있다.상대적으로 노출이 적은 Refresh Token의 경우 Access Token을 새로 발급받을때만 사용되기 때..

2024. 11. 13. 00:05
TypeOrm

TypeOrm 주요메서드

주요 메소드 및 기능create: 모델에 해당되는 객체를 생성하지만 데이터베이스에 저장하지 않음 const user = this.userRepository.create({ email: 'example@domain.com', });새 객체를 만들고 검증할 때 유용합니다.save: 객체를 데이터베이스에 저장 const user = await this.userRepository.save({ email: 'example@domain.com' });객체를 생성하고 즉시 데이터베이스에 저장할 때 사용됩니다.preload: 데이터베이스에 있는 데이터를 입력된 값으로 업데이트 const user = await this.userRepository.preload({ id: 101, email: 'new_em..

2024. 11. 12. 00:11
TypeOrm

TypeOrm FindManyOptions

findManyOptions는 TypeORM에서 여러 엔티티를 조회할 때 사용하는 옵션 객체입니다. 이 객체를 사용하여 데이터베이스 쿼리에 다양한 조건과 설정을 적용할 수 있습니다. 주요 옵션들을 상세히 설명드리겠습니다.where:설명: 조회 조건을 지정합니다. 객체 형태로 컬럼과 값을 매핑하거나, 배열 형태로 여러 조건을 지정할 수 있습니다.예시:위의 예시는 name이 "John"인 사용자들을 조회합니다. const users = await userRepository.find({ where: { name: "John" } });relations:설명: 관계된 엔티티를 함께 로드할 때 사용합니다. 배열로 관계 엔티티의 이름을 지정합니다.예시:사용자와 함께 profile, posts 관계를 로드합..

2024. 11. 11. 03:43
TypeOrm

TypeOrm Relationship

TypeORM에서 관계(Relationship)는 두 엔티티 간의 연결을 설정하여 데이터베이스에서 연관된 데이터를 쉽게 조회하고 조작할 수 있도록 합니다. 관계 설정을 통해 객체 지향적으로 데이터베이스의 테이블 간 관계를 표현할 수 있으며, TypeORM은 이 관계를 기반으로 쿼리를 자동 생성하고 관리합니다.TypeORM에서는 크게 다음 네 가지 종류의 관계를 지원합니다:One-to-One (일대일)One-to-Many (일대다)Many-to-One (다대일)Many-to-Many (다대다)1. One-to-One (일대일) 관계일대일 관계는 한 엔티티가 다른 하나의 엔티티와 단독으로 연결되는 관계입니다. 예를 들어, 사용자(User)와 프로필(Profile) 사이의 관계에서 사용자는 하나의 프로필을 가..

2024. 11. 9. 03:46
  • «
  • 1
  • 2
  • »

공지사항

전체 카테고리

  • 분류 전체보기 (58)
    • 배포 (5)
    • TypeScript (15)
    • JavaScript (1)
    • Network (2)
    • 웹 보안 (2)
    • DB (1)
    • 기타 (6)
    • NestJS (14)
    • TypeOrm (10)
    • NextJS (2)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #async
  • #타입스크립트
  • #node
  • #Access Token
  • #티스토리챌린지
  • #guard
  • #pipe
  • #refresh token
  • #웹 보안
  • #오블완
  • #Interceptor
  • #nestjs
  • #핫리로드
  • #페이징처리
  • #DTO
  • #class-validator
  • #inheritance
  • #Postman
  • #page
  • #options
  • #class validator
  • #dacorator
  • #class-transformer
  • #typescript
  • #Embedding
  • #무습다
  • #Token
  • #TypeORM
  • #pagination
  • #데코레이터
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 꾸크리 개발 블로그 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바