본문 바로가기

반응형

[NestJS]

(9)
# NestJS에서 Handlebars 이용하기 NestJS에서 Handlebars 이용하기 백엔드 프레임워크지만 간단한 프론트 화면이 필요할 경우가 있다. 기본 사용 방법 Handlebars 설치 npm install --save hbs main.ts 설정 import { NestFactory } from '@nestjs/core'; import { NestExpressApplication } from '@nestjs/platform-express'; import { join } from 'path'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(..
[NestJS] - 8편 (JWT) NestJS - 8편 (JWT) 인증(Authentication) & 인가(Authorization) 인증(Authentication): 요청자가 자신이 누구인지 증명하는 과정 최근에는 JWT를 이용해 많이함. 미들웨어로 구현하는것이 좋은 사례임. 인가(Authorization): 인증을 통과한 유저가 기능을 사용할 권리가 있는지 판별하는 것. 미들웨어는 실행 컨텍스트(ExecutionContext)에 접근하지 못하고 단순히 자신의 일만하고 next()를 호출하므로 다음에 어떤 핸들러가 실행될지 모르므로 가드(Guard)를 주로 이용함. 인증 실패시: 401 Unauthorized 또는 403 Forbidden 으로 응답 많이함. 인가 - 가드를 통한 인가(Authorization) ex) 사용자 권한에..
[NestJS] - 7편 (미들웨어) NestJS - 7편 (미들웨어) 미들웨어란? 라우트 핸들러가 클라이언트의 요청을 처리하기 전에 수행되는 컴포넌트 주로 아래의 작업들을 수행한다. 쿠키 파싱: 쿠키를 파싱하여 사용하기 쉬운 데이터 구조로 변경합니다. 이를 이용하면 라우터 핸들러가 매번 쿠키를 파싱할 필요가 없습니다. 세션 관리: 세션 쿠키를 찾고, 해당 쿠키에 대한 세션의 상태를 조회해서 요청에 세션 정보를 추가합니다. 이를 통해 다른 핸들러가 세션 객체를 이용할 수 있도록 해 줍니다. 인증/인가: 사용자가 서비스에 접근 가능한 권한이 있는지 확인합니다. 단, Nest는 인가를 구현할 때 가드(Guard)를 이용하도록 권장하고 있습니다. 본문(body) 파싱: 본문은 POST/PUT 요청으로 들어오는 json 타입뿐 아니라 파일 스트림과..
[NestJS] - 6편 (DB연결하기 TypeORM 트랜잭션 마이그레이션) NestJS - 6편 (DB연결하기 TypeORM 트랜잭션 마이그레이션) 관련 라이브러리 설치하기 npm install --save @nestjs/typeorm typeorm@0.2 Typeorm 버전을 0.2로 명시한 이유는 https://docs.nestjs.com/techniques/database#typeorm-integration WARNING Note that we're using TypeORM v0.2, which isn't the latest version of TypeORM. The latter has substantial modifications and duplicate methods which are used on this page. You can read about t..
[NestJS] - 5편 (파이프) NestJS - 5편 (파이프) 파이프 개념 파이프란? 파이프는 클라이언트의 요청이 왔을 때 요청된 객체를 변환할 수 있는 기회를 제공한다. 파이프 사용 목적 파이프는 주로 2가지 목적으로 사용된다. 변환: 입력 데이터의 형변환 유효성검사: 입력데이터가 내가 정한 기준에 맞는지 검사하고 아닐경우 예외 처리 @nest/common @nest/common 패키지에는 내장파이프가 들어있다. ValidationPipe ParseIntPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe DefaultValuePipe ParseIntPipe, ParseBoolPipe, ParseArrayPipe, ParseUUIDPipe 여기서 ParseIntPipe, ParseBoolPipe, P..
[NestJS] - 4편 (모듈~config파일) NestJS - 4편 (모듈~config파일) 모듈(Module) 개념 모듈이란? 클래스나 함수같은 한가지 일만하는 컴포넌트가 아닌, 여러 컴포넌트를 조합해 더 큰 작업을 수행하는 단위. 우리가 그동안 다른 곳에서 작성한 파일을 불러와 import가 가능했던 것은 작성했던 파일의 아래에서 export 명령어를 통해 내보내줬기 때문이다. 전역 모듈 사용이 좋은 방법은 아니지만 꼭 필요하다면 선언하는 방법도 있다. @Global() @Module({ providers: [CommonService], exports: [CommonService], }) export class CommonModule { }동적 모듈(Dynamic Module) 동적 모듈이란? 모듈이 생성될 때 동적으로 어떠한 변수들이 정힌다. ..
[NestJS] - 3편 (프로바이더) NestJS - 3편 (프로바이더) 프로바이더 2편에서 소개한 컨트롤러가 클라이언트의 요청과 응답을 처리한다면, 제공해야할 데이터의 처리는 프로바이더가 맡는다. Nest에서 제공하는 프로바이더의 핵심은 의존성을 주입할 수 있다는 점이다. 의존성 주입(Dependency Injection, DI) 쉽게 말하자면 우리가 스프링에서 컨트롤러로 들어온 요청을 서비스에게 보내주었듯 마찬가지로 Nest에서도 컨트롤러에서 서비스로 보내준다. 우선 모듈에 사용할 수 있도록 등록을 해줘야한다. 모듈 @Module({ ... providers: [UsersService] }) export class UsersModule {} 크게 두가지로 나누어 컨트롤러와 서비스를 연결할 수 있다. 상속관계에 있지 않는 생성자 기반 주입..
[NestJS] - 2편 (설치~인터페이스) NestJS - 2편 (설치~인터페이스) 설치 npm i -g @nestjs/cliNestJS generator 설치 nest new project-nameNestJS generator로 새 프로젝트 생성 여기서 폴더구조 쫌 살펴보면 @Controller가 보인다. 엥? 내가 생각하는 그 스프링 어노테이션 컨트롤러가 맞나? 정답: 맞다.. npm i필요한 패키지 설치 npm start 컨트롤러 MVC(Model View Controller)패턴의 컨트롤러가 맞다. Request, Response를 처리한다. 코드로 이해해보자 nest g controller [name]해보면 띠용? 컨트롤러가 알아서 생성되고 메인 모듈인 app.module.ts에도 알아서 컨트롤러가 등록된다. 컨트롤러 뿐만이 아니다. n..

반응형