![[NestJS] Interceptor](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIxWMQ%2FbtsKival7hI%2FZPKwazf2GDxKYLWR6CoEt1%2Fimg.png)
인터 셉터 NestJs에는 인터셉터라는것이 있다.처음에는 미들웨어의 다른 용어라고 생각했는데 미들웨어는 따로 있다.미들웨어와 비슷해보이지만 그림 처럼 요청이 핸들러로 들어가기 전에 요청을 가로채거나,응답하기 전에 가로채서 변형이 가능하다. Nest의 생명주기에서 미들웨어가 가장 먼저 실행되기 때문에 요청 부분은 미들웨어를 쓰지 않을까,응답할때 응답을 변형하거나 로그를 찍는등의 역할을 하면 좋겠다 정도의 생각만 들었다.아직 이 인터셉터라는 개념의 유용함과 편리함에 대해 느껴보지 못해서 정확히는 감이 안잡힌다. 인터셉터 만들어보기import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";import { map, Observ..
![[NestJs] 파이프와 DTO](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyTHAj%2FbtsKhcuT7Eh%2Fi4araGUnGTsPlFG2rdlBAK%2Fimg.png)
파이프 파이프는 요청 객체가 컨트롤러 핸들러로 전달되기 전에 데이터 변환, 유효성 검사를 하는데 사용된다. 공식 문서에 보면 여러가지 파이프가 있으며, 바인딩 파이프 예시를 보면 @Param 데코레이터와 함께 int형식이 맞는지 확인하는데 쓰고있다. zod 라이브러리를 사용 할 수도 있지만, 클래스 검증을 이용한 방법이 깔끔한것 같아서 해당 방법으로 유효성을 검증했다. DTO (Data Transfer Object)데이터 간 전송을 목적으로 활용되는 객체다.Dto 클래스를 만들어서 파이프를 통해 유효성을 검증할 수 있다. 일단 2가지 라이브러리가 필요하다.npm i class-validator class-transformer class-transformer는 전달된 요청 객체를 dto 타입스크립트 객체..
![[NestJs] 데코레이터,컨트롤러,서비스,모듈](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2qj4I%2FbtsKgKS5QeG%2F9yJSV7mqJsb783nd2Mklt1%2Fimg.png)
데코레이터NestJs에서 중요한 개념이고 다양한 기능들이 데코레이터로 제공된다.클래스나 속성,메서드,매개변수에 추가 기능을 쉽게 적용할 수 있도록 도와주는 문법이다.NestJs에서는 데코레이터를 통해 메타데이터를 추가하거나 특정 동작을 부여한다. C#의 어트리부트와 비슷하고 C#에서는 대괄호 안에 넣는데, 자바스크립트는 @를 앞에 붙여서 사용한다. 아래 코드를 보면 AppController 클래스는 @Controller 데코레이터를 통해 해당 클래스가 컨트롤러 임을 알리고,@Get 데코레이터를 통해 해당 함수가 Get Http 요청을 처리해야하는 함수인지를 알린다.@Controller()export class AppController { constructor(private readonly appServ..
![[NestJs] NestJs 시작하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAlmkO%2FbtsKfNiJT5A%2FaRjr2aPvQlqhIUaeXMTSw0%2Fimg.webp)
현업에서 내가 서버를 다룰 일은 아마? 없겠지만 하나 정도는 공부해보고 싶었다. 서버를 개발하기 위해 여러가지 언어, 프레임워크 선택지가 있지만, 여러곳에 쓰임새가 많은 자바스크립트와 타입스크립트 쪽을 생각했고 그중에서도 구조를 강제하는 NestJs가 맘에 들었다. NestJS NestJs는 Node.js 서버를 구축하기 위한 프레임워크다.자바 스크립트와 타입 스크립트 전부 가능하며, Express를 기반으로 작동한다. (Fastify도 사용 가능)컨트롤러,서비스의 묶음으로 이루어진 모듈들간의 상호작용을 통해 어플리케이션을 구성한다. NestJS는 DI(의존성 주입) 와 Ioc(제어의 역전) 라는 개념을 사용하는데 아직 잘 와닿지가 않아서 나중에 따로 포스팅을 해볼 예정이다. 유니티에도 DI를 이용한 ..
![[어드레서블] - 서버에서 다운받기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCg1xK%2FbtsIZYle1Dg%2FbadLnL8SSORfXKpg1QGyMk%2Fimg.png)
처음이시라면 기본 정보를 보고나서 보시길 추천드립니다. https://dev-junwoo.tistory.com/159 [어드레서블] - 기본 및 사용법최근에는 어드레서블을 서버에서 다운받는 작업을 진행했다.정보가 있는듯 없는듯 해서 꽤나 애를 먹었다.작업을하며 알게된 내용들을 조금 정리해볼까 한다.어드레서블 어드레서블은 에셋번dev-junwoo.tistory.com 어드레서블을 사용한다는건 로컬에서만 사용하면서 편하게 리소스 관리를 할 목적일수도 있지만,처음 어플 다운 용량을 줄이고 서버에서 추가적인 리소스를 다운받을 수 있게 하면서 어플 업데이트 없이 번들 업데이트를 통한 패치를 위한 목적도 있다.어드레서블 설정 기본 어드레서블 설정 - Catalog 에서 2가지 옵션을 선택해줘야한다.원격 카탈로그 빌..
![[어드레서블] - 기본 및 사용법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy983F%2FbtsIWD8ihQS%2FSNkifBcUBPrun4riJZK8vk%2Fimg.png)
최근에는 어드레서블을 서버에서 다운받는 작업을 진행했다.정보가 있는듯 없는듯 해서 꽤나 애를 먹었다.작업을하며 알게된 내용들을 조금 정리해볼까 한다.어드레서블 어드레서블은 에셋번들과 같은 자산관리 시스템이다.개발자가 할게 많은 에셋번들과는 달리 에셋번들을 한번 매핑해서 조금 더 쉽게 만든 시스템이라고 한다. Resources 폴더로 자산들을 관리한다면 아래와 같은 단점들이 있다. - 빌드에 모두 포함 됨.(어드레서블도 로컬에 저장한다면 포함)- 초기에 자산들이 로드되기 때문에 로딩 시간이 길어짐- 런타임에 한꺼번에 메모리에 로드 반대로 어드레서블을 사용한다면 어느정도 극복이 가능하다. 특히나 모바일 게임이라면 유저들이 마켓에서 보게되는 큰 용량, 초기에 느껴지는 느린 로딩들은 이탈에 상당한 영향을 끼치지..