본문 바로가기

STUDY/Node.js

(28)
Node.js | Crypto 모듈을 사용해 비밀번호 암호화 하기 node에서 기본으로 제공해주는 Crypto 모듈을 사용해 비밀번호를 암호화하기로 했다. 비밀번호는 복호화 할 수 없게 단방향 암호화를 해야 한다. 단방향 암호화 중 가장 쉬운 방법은 hash를 하는 것인데, Crypto에서 일반 hash를 생성하는 함수도 제공한다. 하지만 더 안전하게 암호화하기 위해서는 salt를 사용해야 한다. salt란 해시할 때 추가로 사용되는 데이터다. salt를 사용하지 않고 해시만 할 경우에는 동일한 해시가 생성될 가능성이 있기 때문에 salt라는 추가적인 값을 더해 암호화를 한다. 이 때 salt는 비밀번호를 암호화할 때 마다 랜덤하게 생성된 값이어야 한다. 즉, 사용자의 비밀번호를 암호화할 때 마다 새로운 salt를 무작위로 생성해서 사용한다. 항상 동일한 salt를 사..
NestJS | API 만들기 (3) - Exception, Validation Built-in HTTP exceptions Nest가 기본적으로 제공하는 exception들이 있다.(HttpException을 기반으로 하는) BadRequestException UnauthorizedException NotFoundException ForbiddenException NotAcceptableException RequestTimeoutException 이외에도 여러 exception을 제공한다. https://docs.nestjs.com/exception-filters 서비스에서 Exception 처리하기! 가장 기본적인 exception처리를 해보자.. UserService에서 id로 찾은 user가 존재하지 않을 경우 NotFoundExcption을 발생하도록 한다. Promise가..
NestJS | API 만들기 (2) - Controller Controller 컨트롤러는 요청과 응답을 처리하는 곳. express에서 routing처리 하던 것과 거의 동일하다. @Controller데코레이터를 사용한다. @Controller데코레이터에 path prefix를 설정할 수 있다. @Controller('users')는 /users로 들어오는 모든 요청을 처리하게된다. import { Controller } from '@nestjs/common'; import { UserService } from './service/user.service'; @Controller('users') export class UserController { constructor(private readonly user..
NestJS | API 만들기 (1) - Repository 데이터베이스 connection 방법 Repository Pattern TypeORM이 Repository Pattern을 지원하기 때문에 Entity와 Repository를 사용할 수 있다. Entity @Entity를 포함한 엔티티 관련 데코레이터도 TypeORM이 지원해준다. import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() address: string; } Custom Repository 리포지토리를 만들건데, Custom reposit..
NestJS | 데이터베이스 연결, 설정 정보를 입력하는 다양한 방법... (database connection) 필요한 종속성 설치 Nest는 TypeORM을 사용한다. @nestjs/typeorm이라는 자체 패키지를 제공하고 있다. npm install --save @nestjs/typeorm typeorm mysql2 TypeORM DB 연결! 1. app.module.ts에서 바로 설정값 넣어버리기 TypeOrmModule.forRoot()메서드로 커넥션에 필요한 정보를 입력한다. // app.module.ts import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', ..
NestJS | 유효성 검사 validation NestJS재밌다.. DTO클래스 생성 글 작성 요청시 사용하는 DTO를 만든다. export class CreateRequestDto { readonly title: string; readonly author: string; readonly regDate: Date; } 아직 유효성 검사 처리가 되어있지 않아서, 아무런 값이나 요청해도 예외처리가 되지 않는다. @Controller('boards') export class BoradsController { constructor(private readonly boardService: BoardService) {} @Post() create(@Body() createDto: CreateRequestDto) { return this.boardService.c..
NestJS | 프로젝트 생성 및 실행 nuxt next nest차이점 알아보다가 갑자기 해보는 NestJS NestJS node.js 프레임워크 Java에 Spring이 있다면, node.js에는 NestJS가 있다.. 요즘 굉장히 핫하다고 함 (이건 못참지) TypeScript 완벽지원 엔터프라이즈용 프레임워크다~ 스프링을 해봤다면 쉽게 적응할 수 있다고 한다! express와 fastify 플랫폼 지원 (express가 기본) install 설치 후 nest입력 해 설치 확인 $ npm i -g @nestjs/cli $ nest 아, node가 설치되어 있어야 한다.. 당연히.. project setting CLI를 설치했으니 이제 프로젝트를 생성할 수 있다. nest new로 생성 $ nest new project-name projec..
Node.js | Oracle 연동 (npm oracledb) 1. npm을 이용하여 oracledb설치 $ npm install oracledb 2. 사용준비 const oracledb = require('oracledb'); 3. DB와 연결하기 이제 콜백 함수의 두 번째 인자값인 conn을 이용하여 쿼리문을 실행하시면 됩니다. oracledb.getConnection({ user: 'user명 입력', password: '비밀번호 입력', host: 'localhost', database: 'xe' }, function (err, conn) { if(err){ console.log('접속 실패', err); return; } console.log('접속 성공'); }); 4. 쿼리문 실행해보기 conn.execute("select * from member", ..