nestjs & nodejs

기존 프로젝트 convert 작업을 하게되면서 기존 table에 관한 entity를 하나하나 작성하기보다 typeorm generator 를 사용하는게 편해 보여서 사용지원 SQLMicrosoft SQLPostgreSQLMySQLMariaDBOracle DatabaseSQLiteInstall 방법npm i typeorm-model-generator사용법Usage: typeorm-model-generator -h -d -p [port] -u -x[password] -e [engine]Options: --help Show help [boolean] --version Show versi..
테스트하면서 로그를 확인할때 console.log 를 주로 사용하였지만 실서버에서는 가독성이 떨어지고 상황에 로그의 시간 또는 어떤 에러로 인한 로그인지 트랙킹할때 가독성이 떨어져 사용하게됨 winston의 장점 Winston은 로그 레벨 및 출력 형식을 사용자 정의할 수 있으므로 프로덕션 환경에서 로깅을 더 효과적으로 관리할 수 있습니다. Winston은 다양한 출력 대상(트랜스포트)을 지원합니다. 파일, 콘솔, 데이터베이스, HTTP 요청 등 다양한 대상으로 로그를 보낼 수 있습니다. Winston은 다양한 로그 레벨(예: info, warn, error)을 지원하여 각각의 중요도에 따라 로그를 기록하고 관리할 수 있습니다. const winston = require('winston'); const ..
nodeJs에서는 mybatis-mapper 모듈을 사용하였지만 NestJS에서는 TypeORM은 둘 다 TypeScript 기반으로 작성되었으며, 이 둘을 함께 사용하면 일관된 언어와 코드 스타일을 유지하기 위한 장점과 개발자 커뮤니티와 잘 작성된 문서를 가지고 있어서 지원 및 문제 해결이 용이하기해 자주 사용하는 것 같아 사용해보기로 했습니다. QueryBuilder 함수 정리 select select([조회할 엔티티 속성 배열]): 조회할 엔티티 속성을 선택합니다. const users = await userRepository .createQueryBuilder("user") .select(["user.id", "user.username"]) .getMany(); where where(criteri..
NestJS에서 Swagger 모듈을 사용하여 API테스트 및 문서화를 해보았습니다. NestJS 장점 자동 문서 생성: Swagger는 API 코드의 주석 및 메타 데이터를 기반으로 API 문서를 자동으로 생성합니다. 이로써 개발자는 API에 대한 문서를 수동으로 작성할 필요가 없으며, API가 변경될 때 문서를 업데이트하는 작업이 줄어듭니다. UI: Swagger UI를 통해 생성된 문서를 시각적으로 확인할 수 있습니다. 이 UI는 사용자 친화적이며 API 엔드포인트를 테스트하고 호출할 수 있는 기능을 제공합니다. 보안 및 인증 통합: Swagger를 사용하여 API에 보안 및 인증 기능을 추가할 수 있습니다. API 엔드포인트에 대한 액세스 권한 및 인증 메커니즘을 문서화하고 구현할 수 있습니다. ..
사용자가 로그인하면 JWT를 생성하고, 이를 사용하여 요청에 대한 인증을 수행하거나 특정 권한을 부여하여 API보안을 위하여 사용하고 이전 포스팅에 authGuard로 JWT를 확인하여 API를 사용할 수 있게끔 해봤습니다. JWT를 검사하는 authGuard 이전 포스팅 https://velog.io/@yth1122/NestJs-AuthGard%EB%A1%9C-Api-%ED%98%B8%EC%B6%9C%EC%8B%9C-%EC%9D%B8%EC%A6%9D%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0 JWT설치 및 기본 세팅 설치 방법 아래 명령어를 통하여 설치를 진행해 줍니다. $ npm install --save @nestjs/jwt import { J..
API 호출시 Header에 JWTtoken을 확인한 후 확인이 될시 request를 받아 로직을 처리하고 없을시 호출할수 없게끔 설게하여 보안을 강화해보기로 했다. NestJS 공식문서를 보고 구현해봤습니다. UseGuards 세팅 .controller.ts에 사용할때 jwtToken을 확인할 부분에 UseGuards를 사용해준다 api단위로도 사용할 수 있다. ex) login하는 api는 토큰이 없어도 사용가능 , mypage나 로그인을 해야만 볼 수 있는 로직의 api는 useguard 사용 JWT check 및 header에 인증정보 담기 import { CanActivate, ExecutionContext, Injectable, UnauthorizedException, } from '@nest..
컨트롤러란? 컨트롤러의 목적은 애플리케이션에 대한 특정 요청을 수신하는 것입니다. 라우팅 매커니즘은 어떤 컨트롤러가 어떤 요청을 받는지 제어합니다. 기본 컨트롤러를 만들기 위해 클래스와 데코레이터를 사용합니다. 컨트롤러 생성시 커맨드 nest g co 다른것들을 생성할시 nest g 생성할네임 or alias 데코레이터 종류 공식사이트에 보면 이런 데코레이터들이 정리 되어있다. 왼쪽에서 사용되는 표기법은 Nest.js 데코레이터들이고 오른쪽은 노드에서 사용할때 자주 보던 문법 들이다. 데코레이터 사용해보기 @GET , @Param , @Query import { Controller, Get, Post , Param, Query } from '@nestjs/common'; @Controller('cats'..
NodeEnv를 사용 한 계기 회사 프로젝트는 node 14를 사용하고 개인 프로젝트는 최신 버전을 사용하여 여러 프로젝트를 서로 다른 버전으로 사용하는 경우 불편함을 느끼게 됨 nest g co를 사용하였는데 위 사진과 같은 에러가 발생하였다. node:fs모듈이 node 18v부터 사용 할수 있다는 글을 확인하였다. 이 문제를 해결하기위해 서칭 중 node version을 프로젝트에 맞게 사용할 수 있는 nodeenv라는 tool을 사용하는 글을 발견하였다. NodeEnv 설치 방법 $ sudo pip install nodeenv 저는 이방법을 통하여 인스톨 하였지만 https://github.com/ekalinin/nodeenv#install 를 참조하여 다양한 방법을 통해 인스톨 가능 설치 후 다..
developertaeng
'nestjs & nodejs' 카테고리의 글 목록