분류 전체보기

    자바스크립트 Promise, async, await 정리

    1. Promise Promise 생성자 함수는 비동기 요청을 처리하는 방법 중 하나인데요. 실행은 되었지만 결과를 아직 반환하지 않은 객체를 의미합니다. 비동기 처리를 수행할 콜백 함수를 인수로 받습니다. 콜백 함수는 resolve와 reject 함수를 인수로 받습니다. 성공 또는 실패 하나의 결과만 반환됩니다. const promise = new Promise((reslove, rejcet) => { if (/*비동기 처리 성공*/{ resolve('value'); } else { /*비동기 처리 실패*/ reject(new Error("...")); } }); 2. async/await async와 await는 프로미스를 보다 쉽게 구현하는 방법입니다. 프로미스의 then, catch, finall..


    NestJS 기초 (12) 가드를 사용한 인증과 인가

    인증 및 인가의 기본 로직은 1. 접근 여부를 파악하고 2. 신원 정보를 확인하고 3. 일치하면 true 아니면 false를 리턴하는 것입니다. 과정을 통과하지 못하는 경우 보통 권한 없음(401) 또는 제한됨(403) 에러를 반환합니다. 가드란? 가드는 CanActivate 인터페이스를 구현하며 싱글 리포지토리를 갖습니다. 가드는 요청을 조건에 따라 라우트 핸들러에서 처리 여부를 결정합니다. 이를 보통 인증이라 합니다. Express 애플리케이션에서 인증은 보통 미들웨어에서 처리했습니다. 그러나 미들웨어는 next()를 호출한 다음 어떠한 핸들러가 실행되는지 알지 못합니다. 반면, 가드는 ExecutionContext 인스턴스에 접근할 수 있으며, 다음에 실행될 것을 분명히 알고 있습니다. 가드를 통한..


    타입스크립트 (3) 클래스 설명 및 사용 방법

    타입스크립트는 ES2015에 도입된 class 키워드를 완벽하게 지원합니다. 타입스크립트는 자바스크립트 클래스 기능에 타입 지정 및 기타 문법을 추가로 제공합니다. 1. 클래스 기초 (1) 클래스 선언 다음은 가장 기본적인 형태의 빈 클래스입니다. class Point {} 이제 몇 가지 요소를 추가해보겠습니다. class Point { x: number; y: number; } const pt = new Point(); pt.x = 0; pt.y = 0; (2) readonly 필드에 readonly를 추가해주면 생성자 외부에서 값을 할당할 수 없게 됩니다. class Greeter { readonly name: string = "world"; constructor(otherName?: string) ..


    비옥한 마음 ⏐ 58 ⏐ 일상 에세이

    1. 들어도 들어도 질리지 않는 노래들이 있다. 자극적이지 않은 노래, 그렇다고 축 처지지도 않는 노래. 마음을 담아 사랑과 꿈에 대해 이야기하는 노래. 내겐 Hillsong 가 그렇다. 2. 좋은 작품은 언제나 사랑과 꿈에 대해 이야기한다. '그럼에도 불구하고'. 나는 이 말을 얼마나 많이도 되뇌었는가. '사랑. 꿈. 그럼에도 불구하고.. 사랑. 꿈. 그럼에도 불구하고..' 3. 얼마전 스스로에게 물은 적이 있다. 무엇을 사랑하고 있는가? 무엇을 꿈꾸고 있는가? 그때까지만 해도 나는 정말이지 사랑과 꿈을 가진 (적어도 이를 좇는) 사람이라 생각하고 있었다. 착각이었다. 아무것도 진실로 사랑하지 않고 있었고, 아무것도 진실로 꿈꾸고 있지 않았다. 어쩌면, 등 떠밀려 그냥 그렇다고 말하고 있었다. 4. 지..


    SQL과 NoSQL의 특성 비교

    SQL (Structred Query Language) NoSQL(Not only Sstructed Query Language) 특징 전통적인 데이터베이스 구성 방식 SQL에 비해 새로운 방식 구성 방식 테이블 방식 다큐먼트 방식 구성 스키마가 필수적 보다 유연하게 구성 가능 관계 설정 관계 설정이 용이 복잡한 관계를 설정하기 어려움 대표 DB MySQL / PostgreSQL MongoDB / Redis 확장성 수직적 스케일 확장 수평적 스케일 확장


    NestJS 기초 (11) API 문서 작성하기 (스웨거)

    API 문서는 보통 개발한 API 기능을 명시하고 다른 개발자와 공유하기 위해 사용합니다. Nest에서는 스웨거(swagger)를 사용하여 간편하게 API 문서를 작성하고 이를 테스트해볼 수 있습니다. 스웨거 설치하기 다음 명령어로 스웨거를 설치합니다. npm install --save @nestjs/swagger swagger-ui-express API 문서 작성하기 스웨거 설치가 완료됐다면 이제 다음과 같이 main.ts 파일을 업데이트해줍니다. 타이틀이나 설명 등은 프로젝트에 맞게 수정하시면 됩니다. //main.ts import { NestFactory } from '@nestjs/core'; import { DocumentBuilder, SwaggerModule } from '@nestjs/sw..


    NestJS 기초 (10) 파이프와 유효성 검사

    파이프(pipes)는 @Injectable() 데코레이터와 함께 명시되는 클라스이며 PipeTransform 인터페이스를 통해 구현됩니다. 파이프는 두 가지 주된 유형을 갖습니다. 변형(transformation): 입력 데이터를 원하는 형식으로 전환(예를 들면, 문자열에서 숫자열로) 검증(validation): 입력 데이터가 유효한지 평가하고 예외가 발생하면 오류 메시지를 전송 두 가지 경우에서 파이프는 컨트롤러 라우트 핸들러에서 처리되고 있는 arguments 위에서 작동합니다. Nest는 메소드 호출 전에 파이프를 끼워넣고, 파이프는 메소드에게 전달되는 아규먼트를 받아서 처리합니다. 파이프가 변형 또는 검증을 마치면 이후 라우트 핸들러가 작동합니다. Nest는 다음과 같은 다양한 기본 파이프들을 제..


    NestJS 기초 (9) 예외 처리

    Nest는 자체적인 예외 처리 레이어를 제공하며 이를 통해 애플리케이션 전반의 에러를 처리할 수 있습니다. 개발자가 애플리케이션 코드에서 예외를 처리하지 않은 경우, Nest 레이어가 이를 포착하여 응답을 전송해줍니다. 이는 NestJS의 글로벌 예외 처리 필터에 의해 진행되며 HttpException 유형의 예외를 처리합니다. 알 수 없는 예외가 발생할 경우 다음과 같은 JSON 응답이 자동으로 생성됩니다. { "statusCode": 500, "message": "Internal server error" } 일반적인 예외 처리 방식 Nest 자체 HttpException 클래스는 @nestjs/common 패키지 내에 있습니다. 앞서 우리가 만들었던 CatsController에서 GET 라우트 핸들러..