본문 바로가기

분류 전체보기

(717)
[Java] Record class란? Jdk 버전에 대한 팔로우업에 잊고 행복한 삶을 살다가 Jdk 14부터 정식 릴리즈한 Record class라는 애가 나왔고. DTO로써 사용하기 최고라고 추천을 받아 공부겸 포스팅을 진행하려고한다. 1) Record 클래스가 뭔데? 레코드란 데이터클래스 이며, 순수하게 데이터를 보유하기 위한 특수한 종류의 클래스이다. 코틀린의 데이터 클래스와 비슷한 느낌이다. 데이터의 유형만 딱 나타내는 느낌으로, DTO클래스를 생성할때 굉장히 간결해지는 장점이 있다. 2) 샘플 소스 및 대략적인 사용 예제 한 30%의 사람들 혹은 옛날 코드들은 이렇게 DTO가 짜여있다. package com.inna.innabackend.dto; public class SampleRecordDto { private String na..
[NestJS] 커스텀 파이프 개발 자바랑 살짝 비슷하게 생겼는데 커스텀 파이프는 PipeTranform을 구현해야 하고, 하위 transform()메소드를 구현해야한다 import { ArgumentMetadata, PipeTransform } from "@nestjs/common"; export class BoardStatusValidationPipe implements PipeTransform { transform(value: any, metadata: ArgumentMetadata) { console.log(value) console.log(metadata) return value; } } @Patch('/:id/status') updateBoardStatus( @Body('status',BoardStatusValidationPip..
[NestJs] 예외 처리 그냥 뭐.. 정의 된 예외를 던져주면된다. 스프링이랑 이건 뭐 거의 동일하다. getBoardById(id: string) : Board{ const board = this.boards.find((board) => board.id == id); if(!board) throw new NotFoundException(); return board } throw new NotFoundException("Not Found Exception"); 이렇게 하면 Exception message까지 가능하다. 이렇게 확인까지 가능하다. 생각보다 간편하다. ExceptionHandler 기능을 하는것도 있을것같은데...무튼 그렇다. ExceptionHandler라기 보다는, 글로벌하기 파이프를 연결 하면.. 가능할 것같다..
[NestJs] Pipes란? 드디어 NestJS의 개념에 대한 공부이다. NestJs에서 Injectable() 데코레이터로 달린 클래스를 의미한다. 파이프는 data transformation과 data validation을 위해서 사용된다. 파이프는 컨트롤러 경로처리기에 의해 처리되는 인수에 대해 작동된다. 파이프가 없으면 바로 핸들러로 가게된다. 근데, 만약에 파이프가 있다면? 데이터에 대한 체크와 유효성 체크를 하고 나서 핸들러로 보내게된다. 스프링으로 치면... AOP나 필터라고 생각하면된다. (백엔드는 다 비슷하구나..) 자, 그러면 어떻게 구현을 하고 어떻게 동작하는지 한번 해보자 특정 메소드 별로 데코레이터를 선언해서 사용할 수 있다. 파라미터단위로 데코레이터를 선언해서 사용할 수도있다. 글로벌 레벨의 파이프도 있다...
[NestJS] 게시물 CRUD Id기준으로, 해당 게시물의 정보를 return 해주는것을 만들것이다. 배열에서, 해당 게시물의 id와 받은 id가 같은것을 return 해주는 메소드를 서비스에 넣었다. getBoardById(id: string) : Board{ return this.boards.find((board) => board.id == id); } 컨트롤러도 추가해주자 @Get('/:id') getBoardById(@Param('id') id :string): Board{ return this.boardService.getBoardById(id); } 이렇게 되면, id기준으로 정보를 가져올 수 있다. 테스트를 해보자 정보를 넣고, 전체를 가져오고 그리고 특정 게시물 ID로 해당 데이터를 가져오는 것까지 완료를 했다., 한가..
[NestJS] DTO 사용 DTO는 뭐 알다싶이 데이터 전송객체이다. 클라이언트로의 값을 받거나, DB로 전달할때 주로 사용하는 객체이다. DTO - 데이터 유효성을 검증하는 데 효율적이고, 코드를 안정적으로 만들어주는 역할을 한다 (몰랐던 사람은 참고 ㅎ) * DTO를 만들어보자 이전 프로젝트를 보면, 파라미터로 해당 값들을 따로따로 한개씩 받는다. 말도안되는 짓이기 떄문에, DTO를 만들어서 DTO채로 받아보자 export class createBoardDto{ title: string; description: string; } 변경된 controller와 Service를 보자 import { Injectable } from '@nestjs/common'; import { Board, BoardStatus } from './b..
[NestJs] 게시판 정보 불러오기 및 게시판 마무리 board controller import { Body, Controller, Get, Post } from '@nestjs/common'; import { BoardsService } from './boards.service'; import {Board} from './board.model' @Controller('boards') export class BoardsController { constructor(private boardService: BoardsService){} @Get('/') getAllBoard(): Board[]{ return this.boardService.getAllBoards(); } @Post('/create') createBoard(@Body('title') title: ..
[AWS] EC2에 RDS 세팅하기 데이터베이스 생성은 생각보다 쉽다. 아래 사항만 기억하면된다. 1. 손쉬운 생성 2. 프리티어(프로덕션이나, 개발인 경우 과금 청구) 3. EC2연결 설정 (아닌경우는 무시해도됨) 3번을 체크하지않고, 직접 할수도 있긴하다. 저 작업은 VPC와 보안그룹에 대한 것만 자동생성해서, Ec2에서 디비에 대한 인바운드 규칙만 추가해주는 것이다. 실제로도 aws에서도 아래와 같이 설명해주고 있다. *이 데이터베이스의 컴퓨팅 리소스로 추가할 EC2 인스턴스를 선택합니다. VPC 보안 그룹이 이 EC2 인스턴스에 추가됩니다. VPC 보안 그룹은 EC2 인스턴스가 데이터베이스에 액세스하도록 허용하는 인바운드 규칙과 함께 데이터베이스에 추가됩니다. 일단. 체크하고 생성하고 변경된 정책에 대한 확인을 해보자 못보던 보안 ..