Backend
엔티티 클래스 @Entity @Table(name = "orders") @Getter @Setter public class Order { } @Entity는 해당 클래스가 엔티티 클래스임을 Spring에 알려준다. @Table은 엔티티 클래스가 매핑될 테이블을 지정하며, 지정하지 않을 시 하이버네이트의 테이블명 생성 전략에 따라 자동으로 생성된다. @Getter와 @Setter은 Lombok에서 제공하는 어노테이션. @Setter의 경우에는 필요한 부분에서만 부분적으로 사용해야 한다. 변경 포인트가 많아져 예측이 어렵다. 이에 대해서는 후술하려고 한다. 테이블 컬럼 생성 @Entity @Table(name = "orders") //테이블 이름 변경 @Getter @Setter public class O..
H2 데이터베이스 개발이나 테스트 용으로 주로 사용되는 가벼운 DB, 데이터베이스 사용자 UI를 제공한다. H2 데이터베이스 다운로드 https://www.h2database.com H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo www.h2dat..
프로젝트 생성 프로젝트는 Java 기반의 Gradle 프로젝트 생성 버전은 2점대 버전 사용 예정 스프링 부트 3.0 이상을 사용하게 될 시에는 JDK 17버전 이상, Javax 패키지를 사용할 수 없으므로 패키지 이름을 Jakarta로 변경해야 한다고 함 Dependency에 사용할 패키지를 추가한 후 프로젝트를 생성하면 기본 보일러 플레이트가 제공된 스프링 프로젝트가 다운로드됨 프로젝트 구조 src : 프로젝트의 기능을 구현하는 코드들을 작성. main : 실제 코드들 test : 테스트 주도 개발을 위한 코드들 작성 gradle : xml을 통한 프로젝트 세팅 대신 Groovy 기반의 빌드를 위한 프레임워크. 빌드의 자동화를 지원해줌, Maven과 더불어 많이 사용됨 gradlew, gradlew...
API를 만들다 보면 파일과 같은 바이너리 데이터의 처리를 구현해야 할 수도 있다. 이번에는 NestJS에서 요청으로 받은 파일을 서버 내부에 업로드 하는 과정에 대해서 작성해보려고 한다. 패키지 설치 yarn add @types/multer --dev Express에서는 파일 업로드 관련 모듈을 제공해주는 Multer 패키지를 통해서 파일 업로드를 구현하고는 한다. Multer는 요청과 핸들러 사이에서 파일을 처리해주는 미들웨어이다. NestJS에서도 기본적으로 Multer를 지원한다. 우리는 타입스크립트로 사용하기 위해서 DevDependency로 다음 모듈을 설치해주자. Request에서 파일 받기 ▶ file.controller.ts @Controller('file') export class Fi..
프로젝트를 운영하다 보면 예상치 못한 오류가 발생할 수 있다. 예외를 완전히 막을 수 있다면 좋겠지만 현실적으로는 불가능하다. 그렇다면 우리가 해야 하는 것은 예상치 못한 오류가 발생해도 프로젝트 전체에 악영향을 주지 못하게, 그리고 예외를 추적하여 빠르게 소스코드를 수정할 수 있도록 해야 할 것이다. 이번에는 예외가 발생하는 경우, 자동으로 Catch받아 예외 처리를 해주는 Exception Filter를 적용해 보려고 한다. 필터 작성하기 ▶ /src/commons/filter/http-exception.filter.ts import { ArgumentsHost, Catch, ExceptionFilter, HttpException, HttpStatus, LoggerService, } from '@ne..
NestJS에서도 Express와 같이 미들웨어를 사용할 수 있다. 이전 포스팅에서 Winston을 이용한 Logging에 대해서 알아보았었는데, 이번에는 요청이 들어오기 전 미들웨어를 이용하여 요청들을 로그를 남겨보는 작업을 해보려고 한다. 미들웨어 작성 미들웨어는 클라이언트의 요청을 컨트롤러의 핸들러가 처리하기 전에 로직을 실행하게 할 수 있다. 기본적으로 사용하는 방법은 Express의 미들웨어와 유사하다. ▶ /src/commons/middleware/logger.middleware.ts import { Injectable, Logger, NestMiddleware } from '@nestjs/common'; import { Request, Response } from 'express'; @Inj..
Application을 개발 혹은 배포 후 예상치 못한 오류의 추적이나 사용 히스토리 파악을 위해서는 로그를 남기는 작업을 하게 된다. 이번에는 NestJS에서 Winston을 이용해서 Log를 남기는 작업을 포스팅해보겠다 패키지 설치 yarn add nest-winston winston winston-daily-rotate-file Winston 패키지는 로그의 포멧, 파일 형태로 저장 등 로깅을 도와주는 패키지이다. NestJS에서도 해당 패키지를 사용할 수 있다. 위의 명령어를 통해 패키지를 설치하자. Winston Config ▶ /src/utils/winston.config.ts import { utilities, WinstonModule } from 'nest-winston'; import *..
서비스하고있는 많은 플랫폼들은 결제 프로세스를 사용한다. 이번에는 클라이언트측에서 결제 요청 후 백엔드 서버에서의 처리에 대해서 포스팅해보려고 한다. https://sjh9708.tistory.com/50 [Web] 결제 프로세스 적용을 위한 IamPort 사용해보기 우리는 흔히 웹, 키오스크, 모바일 등에서 결제 시스템을 이용하게 된다. 결제 프로세스에 적용을 위한 개념과 간단한 세팅 하는 것을 다루어보려고 한다. 결제 과정 1. 구매자가 구매 상품과 금 sjh9708.tistory.com 해당 포스팅에서 IamPort를 통한 결제 적용과 간단한 프론트엔드 코드를 작성했었다. 프론트엔드에서 결제 완료 후 결제 정보와 함께 벡엔드 서버로 요청을 하게 되는데, 결제 완료에 대한 기록을 남기고, 사용자에게 ..
많은 웹 서비스들을 보면 페이스북, 카카오, 네이버, 구글 등으로 소셜 로그인을 지원하는 것을 볼 수 있다. 이렇게 다른 믿을만한 플랫폼에 인증을 대신 맡기는 것을 OAuth 인증이라고 하는데 이번 포스팅에서는 구글 OAuth 인증에 대해서 알아보도록 하자. https://sjh9708.tistory.com/46 [Web] 인증과 인가 - JWT 토큰 인증 앞 포스팅에서 세션 방식의 인증과, 성능 개선을 위한 방법들에 대해서 다루어 보았었는데 이번에는 언급했던 토큰 인증 방식에 대해서 알아보려고 한다. 토큰 인증 세션 인증 방식과 달리 인증 sjh9708.tistory.com 패키지 설치 yarn add passport-google-oauth20 Google OAuth의 Passport Strategy를..