반응형 개발공부102 [노마드 코더 NestJS로 API 만들기] 2 DTO, Validation 파이프 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환할 수 있는 것. ValidationPipe ParseIntPipe / ParseBoolPipe / ParseArrayPipe / ParseUUIDPipe : 전달된 인수의 타입을 검사 DefaultValuePipe : 쿼리 매개변수가 생략된 경우 기본값 설정 유효성 검사 라이브러리 class-validator, class-transformer 설치하기 npm i class-validator class-transformer mapped-types 설치하기 npm i mapped-types main.ts 에 유효성 검사 pipe 생성하기 transform: request로 들어온 파라미터를 원하는 타입으로 변경해준다. true로 해야한다. app.. 2023. 8. 13. Spring MVC vs WebFlux 패턴 비교하기 MVC 패턴 동기적으로 동작하는 블로킹 방식 어플리케이션이 JPA, JDBC 또는 네트워킹 API에 의존하는 경우 spring MVC가 최선이다. 사용자 요청마다 스레드를 계속 생성해야하므로 Thread pool이 만들어진다. 장점 모듈의 분리를 가능하게 하여 코드 가독성이 높아지고 협업에 유리하다. 가장 많이 쓰이는 패턴이며 유지보수가 쉽다. 단점 view-model간 의존성 대량 요청을 받아내는데 (Thread pool hell현상: 큐에 계속 요청이 쌓여있는 것) 한계가 있다. 시스템의 트래픽을 측정해서 Thread pool size를 잘 조정해야한다. 요즘은 webflux 방식을 사용한다고 한다. WebFlux 비동기적으로 동작하는 논블로킹 방식 spring 5 (spring boot 2)에서 새.. 2023. 8. 13. [노마드 코더 NestJS로 API 만들기] 2 service service 생성 $ nest g s entity 폴더 생성 > 데이터베이스 모델 생성 - 가짜 데이터베이스 export class Movie { id: number; title: string; year: number; genres: string[]; } service 에 로직 구현 단일 책임의 원칙 - 한개의 요소는 한개의 기능만 책임진다. @Injectable() export class MovieService { private movies: Movie[] = []; getAll(): Movie[] { return this.movies; } getOne(id: string): Movie { const movie = this.movies.find((movie) => movie.id === +id); i.. 2023. 8. 12. 2 Rest API - Controller, Route [노마드 코더 NestJS로 API 만들기] 컨트롤러 생성$ nest g co Get & Param & Query @Get() getAll() { return 'retturn'; } @Get('search') search(@Query('year') year: string) { return `searcing after ${year}`; } @Get(':id') getOne(@Param('id') id: string) { return id; } Post & Body @Post() create(@Body() movieData) { return movieData; } Delete & Param @Delete() remove(@Param('id') id: string) { return id; } Patc.. 2023. 8. 12. [NestJS] 초기 세팅 설치$ npm i -g @nestjs/cli 프로젝트 생성$ nest new 프로젝트 실행$ npm run start:dev 알아야할 용어: 데코레이터 main.ts : NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 작성하는 애플리케이션의 엔트리 파일모든게 시작된다. app.module.ts : application의 root Module루트 모듈이며 모든 모듈을 import한다. app.controller.ts : 기본 컨트롤러라우트같은 것으로 url을 가져오고 function을 리턴한다. app.controller.spec.ts : 컨트롤러에 대한 단위 테스트 app.service.ts: 기본 서비스비지니스 로직이며 function을 가지고 있다. 2023. 8. 11. [공유/번역] Concise 간결한 Typescript Book 타입스크립트를 clean하고 강격한 코드를 자석하기 위한 핵심 개념과 기술을 알아볼 수 있다. Typescript 5.2 버전을 다룹니다. 출처 GitHub - gibbok/typescript-book: The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and O The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. - GitHub - gibbok/typescript-book: The Concise TypeScript Book: A Concise Guide t.. 2023. 8. 5. NestJs 밋업 Shall We NestJS? 정리 NestJS 책을 읽고 나서 강의를 봐볼까?해서 유투브 검색중에 밋업 영상을 발견했습니다. 핵심만 요약돼있는 영상이라 좋네요. 00:00 오프닝 07:29 남병관: NestJS 시작하기 58:18 이상훈: Angular 프론트엔드 개발자가 본 NestJS 1:21:20 이동현: NestJS에서 Hexagonal Architecture 구현하기 2:02:29 김수현: NestJS와 함께한 3년간 고군분투기 2:46:28 마무리 핵심키워드: controllers / providers / modules / pipes 서버 아키텍처를 쉽게 만들 수 있도록 기본 아키텍쳐를 제공한다. CRUD에 필요한 요소들을 가볍게 세팅해준다. Controller 우리가 아는 controller @Get, @Post, @Put,.. 2023. 8. 3. [SpringBoot] Spring Batch 5 Spring Batch 대용량 일괄처리를 위해 설계된 배치 프레임워크 ex) 일관되고 반복적인 작업, 트랜잭션 관리, logging/trace 모니터링 등 대용량 레코드 처리 Job이라는 단위로 배치 작업을 분류한다. 한 개의 Job은 한 개 이상의 Step을 가진다. Step 안에는 Tasklet 또는 {Reader, Processor, Writer } 묶음이 존재한다. Batch 프로세스 단계 1) Batch Scheduler spring batch 자체는 configuration bean을 통해 Job이 실행될 경우 어떤 일을 처리할지 세팅시켜주기만 할 뿐이므로, Scheduler가 필요하다. 단계 2) JobRepository 배치를 수행하는데 필요한 object를 포함하고 있다. (Job, Jo.. 2023. 7. 20. [Spring Boot] JWT 튜토리얼 [chap.1~3] - 인프런 강의 인프런 강의를 보고 실습하고 정리하기! (무료입니다~) 회원가입, 로그인, 권한 로직을 실제로 구현해보고 Spring Security의 인증과 인가 로직을 경험해본다. 인증 : Request를 보낸 User가 누구인지? 올바른 User인지 확인하는 과정 인가 : Request가 수행하고자 하는 행동이 허가된 행동인지를 확인하는 과정 [무료] Spring Boot JWT Tutorial - 인프런 | 강의 Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com JWT : json 객체를 사용해서 토큰 저장하는 웹토큰 가볍게 적용할 수 있어서 사이드 프로젝.. 2023. 7. 1. 이전 1 2 3 4 5 6 ··· 12 다음 728x90 반응형