Tech Blog of Pinomaker
article thumbnail
NestJs Event 처리(@nestjs/event-emitter)
B.E/Nest JS 2024. 4. 11. 17:52

NestJS에서는 Spring boot의 Events의 기능과 마찬가지로 이벤트를 발행하고 구독하는 기능을 @nestjs/event-emiiter를 이용하여 기본적으로 제공한다. 해당 기능을 이용하면 여러가지 기능을 로직에서 분리하여 개발할 수 있다는 장점이 있다. 오늘은 Nestjs에서 이벤트를 발행하고 구독하는 기능을 정리하고자한다! 00. 들어가기 전(프로젝트 셋팅) 해당 포스팅을 위해 새로운 프로젝트를 생성한다. 아래의 명령어를 이용하면 패키지 관리자로 npm, yarn, pnpm을 선택하라고 나올텐데 필자는 pnpm을 사용한다. npx nest new [project name] Project가 생성되면 아래와 같이 나오면 성공이다. 01. Event-Emiiter 설정 먼저 @nestjs/eve..

article thumbnail
Express + routing-controllers + typedi를 사용한 서버 구축하기(1) - Routing Controller
B.E/Node JS 2023. 10. 12. 00:16

0. 들어가기 전에 NodeJS + Express를 이용하여 백엔드를 구축하면 일반적으로는 Func을 기반으로 라우터와 컨트롤러로 구성하는 계층 구조를 많이 볼 수 있다. 하지만 Express에서도 Spring boot나 NestJS와 같이 controller를 구성하여 controller-service-repository 계층 구조로 구성하고 싶은 개발자가 많을 거다. Class를 기반으로 Express를 Controller, Service, Repository로 계층을 구성하게 되면 비교적 Spring boot나 NestJS 개발자들도 쉽게 접근할 수도 있다는 장점이 있다. 이번에는 routing-controllers와 typedi를 이용하여 Express로 해당 계층을 구현할 예정이다. (1) Ro..

article thumbnail
NestJS V10 마이그레이션 + SWC
B.E/Nest JS 2023. 10. 11. 21:56

NestJS V10에서는 SWC를 사용하여 컴파일을 공식 지원합니다. 그 이외에도 다양한 변화가 있지만 그 변화는 아래의 글에 정리했으니 참고 해주세요. Nestjs V10의 변화점 올해 NestJS에서 V10을 발표했다. 나는 좀 뒤늦게 알게 되었지만 처음 공부할 때가 V8에서 V9 막 넘어갈 때였는 데, 확실하게 업데이트가 빠른 프레임워크인 것 같다. NestJS V10에서 발표한 가장 큰 내 pinomaker.com 오늘은 NestJS를 V10으로 마이그레이션 한 후에 SWC를 적용하는 과정까지를 포스팅 합니다. 1. NestJS Project 생성하기. 먼저 Nest Cli를 이용하여 NestJS 프로젝트를 생성합니다. npx nest new [project name] Package Manager..

article thumbnail
Nestjs V10의 변화점
B.E/Nest JS 2023. 10. 11. 21:20

올해 NestJS에서 V10을 발표했다. 나는 좀 뒤늦게 알게 되었지만 처음 공부할 때가 V8에서 V9 막 넘어갈 때였는 데, 확실하게 업데이트가 빠른 프레임워크인 것 같다. NestJS V10에서 발표한 가장 큰 내용은 SWC, Redis 와드카드 구독 CacheModule 분리, node 12 이하에서 지원 중지 등이 있다. 오늘은 간단하게 NestJS V10에 대한 특징을 간단하게 정리하고자한다. 1. SWC SWC, Speedy Web Compiler는 컴파일과 번들링 모두에 사용할 수 있는 확장 가능한 Rust 기반의 플랫폼이다. 기존의 Babel의 대체재라고 생각하면 이해하기 편하다. Nest Cli와 SWC를 같이 사용하게 되면 개발 프로세스 속도를 간단하게 대폭 상승 시킬 수 있다. SWC..

article thumbnail
Nestjs Swagger(1) - Swagger 설정
B.E/Nest JS 2023. 10. 9. 01:14

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 Swagger는 API를 쉽게 문서화를 시킬 수 있는 라이브러리 입니다. Swagger를 사용하면 코드레벨에서 API 문서를 작성하고 동기화할 수 있어 어렵지 않게 API를 실시간으로 관리할 수 있다는 장점이 있으며, API를 사용해야하는 유저들은 Swagger에서 테스트를 할 수 있다는 장점이 있습니다. 오늘은 Nestjs에서 Swagger를 사용하는 방법에 대해 알아봅니다. 0. 의존성 모듈 설치 먼저..

[Spring] Spring을 이용한 Todo Crud 구현하기(2) - Jpa 셋팅 및 DB 연결
B.E/Spring 2023. 2. 13. 00:42

아래의 게시글을 확인하고 본 글을 읽기 바랍니다. [Spring] Spring을 이용한 Todo Crud 구현하기(1) - Spring boot 셋팅 해당 게시글은 아래 스택을 이용하여 구현할 예정 입니다. Spring boot Spring Security + JWT JPA 1. Spring Boot 생성 먼저 Spring Boot Project를 생성하기 위하여 아래의 사이트에 접속한다. https://start.spring.io/ 위 pinomaker.com 이번 게시글에서는 JPA와 MySQL를 셋팅해보자 runtimeOnly 'com.mysql:mysql-connector-j' // MySQL Driver implementation 'org.springframework.boot:spring-boo..

[Spring] Spring을 이용한 Todo Crud 구현하기(1) - Spring boot 셋팅
B.E/Spring 2023. 2. 11. 00:05

해당 게시글은 아래 스택을 이용하여 구현할 예정 입니다. Spring boot Spring Security + JWT JPA 1. Spring Boot 생성 먼저 Spring Boot Project를 생성하기 위하여 아래의 사이트에 접속한다. https://start.spring.io/ 위의 사이트에 들어가면 Spring boot 프로젝트를 생성하기 위한 사이트가 나오는 데, 아래의 설정에 맞추어서 셋팅하거나 본인이 하고 싶은 것이 있으면 수정을 한 후에 GENERATE 버튼을 클릭하면 압축 폴더가 다운로드 받아지며, 해당 폴더를 인텔리제이로 열어주자 Project(Package 모듈) : Gradle Language : Java Spring boot Version : 2.7.8 (SNAPSHOT이 붙은..

[Spring] Spring DI에 대해서 알아보자.
B.E/Spring 2022. 11. 18. 01:21

DI Dependency Injection의 약자로, 의존 주입을 의미하는 데, 여기서 말하는 의존이란 객체 간의 의존을 의미한다. 아래의 예시를 보고 알아보자. public class MemberService{ // MemberDao 객체 생성 private MemberDao memberDao = new MemberDao(); // Member 저장 메서드 public void save(RequestDto req){ // 같은 Email의 Member가 있는 지 조회 Member member = memberDao.selectByEmail(req.getEamil()); // Email을 가진 Member가 있으면 예외 처리 if(member != null){ throw new DuplicateMember..

Templatee Engine, Mustache 문법
B.E/Spring 2022. 11. 17. 12:43

참고 사이트 : https://taegon.kim/archives/4910 Mustache Mustache는 제어 구조를 가진, 가장 문법이 간단하고 많은 언어를 지원하는 Template Engine이며, Mustache를 기반으로 확장한 Template Engine도 몇가지 있는 데, 대표적으로는 Handlebars와 Hogan.js가 있다. 변수의 사용 아래의 데이터를 이용해 Mustache에서 변수를 사용하는 방법을 알아보자 // Data { "name" : "Chris", "company" : "Github" } Mustache에서는 {{ }}에 변수 이름을 {{ name }}와 같이 입력하여 사용하는 데, 문자열은 자동으로 HTML 이스케이프가 되어 출력이 되지만 이스케이프가 되지 않은 문자열을..

[Nest JS] 파이프(Pipe)
B.E/Nest JS 2022. 11. 14. 13:47

Pipe 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환할 수 있는 기회를 제공한다. 파이프는 주로 변환과 유효성 검사를 위하여 사용 된다. 변환(Transformatiion) : 입력 데이터를 원하는 형식으로 변환 유효성 검사(Validation) : 입력 데이터를 사용자가 정한 기준에 유효하지 않은 경우 예외 처리 @nest/common Module에는 내장 파이프가 마련 되어 있다. ValidationPipe ParseIntPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe DefaultValuePipe 그 중 ParseIntPipe, ParseBoolPipe, ParseArrayPipe, ParseUUIDPipe는 전달된 인자의 타입을 검사하는 용도로 사용..