본문 바로가기
반응형

분류 전체보기312

[NestJS] OpenAPI OpenAPI란? RESTfulAPI를 설명하는 데 사용되는 언어 독립적인 정의 형식이다. Nest는 데코레이터를 활용하여 이러한 사양을 생성할 수 있는 전용 모듈을 제공한다. NestJS -> OpenAPI 문서 https://swagger.io/specification/ OpenAPI Specification - Version 3.0.3 | Swagger OpenAPI Specification Version 3.1.0 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this docu.. 2023. 2. 7.
[개발용어] Nullable(?) Nullable = 너러블 타입, 널이 가능한, 값이 없을 수도 있는 단순히 null이 가능한 타입으로 명시해주는 방법으로 다양한 언어 및 프레임워크에서 ?로 제공한다. 변수 int? number; 변수 number가 가질 수 있는 값은 ?가 없다면 int 타입이지만 ?가 있다면 null도 가능하다. 클래스의 속성 export class User { name: string; team?: string; } ?로 인해 여기서 name은 필수값(required), team은 선택값(optional)_(nullable하기 때문)이다. -> 실제로 NestJS에서 사용할 때는 위에 데코레이터(@)로 타입, 필수 여부 등이 명시적으로 작성되어 있다. 객체(json 타입)의 접근자 변수 name은 user.name이.. 2023. 2. 6.
[NestJS] 유효성 검증(Validation by class-validator) NestJS에서 Validation(유효성 검증)하기 위한 도구, class-validator ValidationPipe는 강력한 클래스 유효성 검사기 패키지와 선언적 유효성 검사 데코레이터를 사용한다. ValidationPipe는 들어오는 모든 클라이언트 페이로드에 대한 유효성 검사 규칙을 적용하는 편리한 접근방식을 제공한다. -> ex. 특정 규칙은 각 모듈의 로컬 클래스/DTO 선언에서 간단한 주석으로 선언된다. class-validator, class-transformer 내장 Validation Pipe 사용 class-validator사용하기 위한 필요한 종속성 설치 $ npm i --save class-validator class-transformer 패키지의 import import { V.. 2023. 2. 6.
[NestJS] Swagger(스웨거)란? NestJS 형상관리 도구_스웨거(Swagger) Swagger(스웨거)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크라고 설명하지만 쉽게 말하면 Swagger는 API 문서 자동화 도구이다. 1. API 문서를 따로 작성할 필요 없다. 2. 만약에 코드와 API 문서를 따로 관리하게 되면 코드를 수정하였는데 API 문서 최신화를 잊어버려서 다른 팀원들에게 공유된 API 문서가 실제 API와 다른 문제가 발생할 수 있다. -> 스웨거를 사용한다면 NestJS에서 코드를 수정하면서 API 문서를 같이 수정할 수 있다. 3. 다른 장점으로는 Swagger는 API를 테스트할 수 있는 GUI를 제공한다. NestJ.. 2023. 2. 6.
[Typescript] Decorator(데코레이터) 타입스크립트_ Decorator(@) 1. 데코레이터를 잘 사용하면 적절하게 관심사를 분리하여 관점 지향 프로그래밍을 적용한 코드를 작성할 수 있음 2. 타입스크립트의 데코레이터는 파이썬의 데코레이터나 자바의 어노테이션과 유사한 기능을 함 3. 클래스, 메서드, 접근자, 프로퍼티, 매개변수에 적용 가능 4. 각 요소의 선언부 앞에 @로 시작하는 데코레이터를 선언하면 데코레이터로 구현된 코드를 함께 실행 5. 예를 들어 다음 코드는 유저 생성 요청의 본문을 DTO로 표현한 클래스이다. class CreateUserDto{ @IsEmail() @MaxLength(60) readonly email: string; @IsString() @Matches(/^[A-Za-z\d!@#$%^&*()]{8,30}$/) r.. 2023. 2. 5.
[js] duck typing(덕 타이핑) with typescript [ts]_덕 타이핑(duck typing) - 타입 구성하기 자바스크립트는 변수에 어떠한 타입의 값도 할당할 수 있다. 일명 덕 타이핑이라 부른다. 타입스크립트도 여러 타입의 값을 할당할 수 있다. 이는여러 타입을 조합한 새로운 타입을 가지는 것이다. 유니언 (Union) 타입 유니언 타입이 위에서 설명했던 여러 타입을 조합한 타입이다. 다음 코드에서 getLength 함수의 인자로 받은 obj 객체는 string 또는 string 배열 타입을 가질 수 있다. function getLength(obj: string | string[]){ return obj.length; } 유니언 타입을 활용하면 변수가 가질 수 있는 값을 제한할 수도 있다. type Team = "Red" | "Blue"; 타입스크립트.. 2023. 2. 5.
[NestJS] Typescript(타입스크립트) NestJS에서 Typescript의 사용 변수 선언 타입스크립트에서 변수를 선언하는 방식은 다음과 같다. [선언키워드] [변수명]: [타입] 선언키워드: const, let 또는 var로 선언한다. const는 선언 후 재할당이 불가능하며 let과 var는 재할당이 가능하여 값을 바꿀 수 있다. 2023.02.04 - [언어/Javascript] - [js] const, let [js] const, let javascript의 변수 선언 ( const vs let ) javascript에서 변수를 선언하는 방법은 3가지 var, let, const가 있다. 하지만 변수 선언 방식 중 하나인 var는 사용을 지양하기 때문에 아래 코드 블록에는 let으로만 kfdd6630.tistory.com let과 v.. 2023. 2. 5.
[NestJS] 모듈, 컨트롤러, 서비스(Controller, Module, Service) NestJS의 아키텍처 구성 _ 모듈(Module), 컨트롤러(Controller), 서비스(Service), 프로바이더(Provider) * nest: using nestcli * g: generate * --no-spec: 테스트를 위한 소스 코드 생성하지 않음 모듈(Module) 모듈(Module) 생성하기 $ nest g module 'moduleName' --no-spec // generage를 g로 줄일 수 있다. $ nest g mo 'moduleName' // module을 mo로 줄일 수 있다. * generage를 g로 줄일 수 있다. module을 mo로 줄일 수 있다. NestJS 모듈: App Module안에 AuthModule과 같은 필요한 모듈들이 있으며 각 모듈안에 Contr.. 2023. 2. 5.
[NestJS] NestJS 실행 및 테스트 명령어 NestJS 개발모드, 워치모드, 생산모드, unit test, e2e test 등 명령어 명령어 모음 * 설치 $ npm install * Nest JS CLI로 NEST JS 시작 $ npm i -g @nestjs/cli $ nest new project-name * 잘 설치되었는지 확인 ( nest 버전 확인 ) $ nest --version * Nest.js 실행 개발모드( development ) 실행 $ npm run start 워치모드( watch mode ) 실행 $ npm run start:dev 생산모드( production mode ) 실행 $ npm run start:prod * 테스트 실행 유닛 테스트 ( unit tests ) 실행 $ npm run test End to eEnd.. 2023. 2. 5.
[NestJS] NestJS 설치 시 있는 파일? eslintrc.js, prettierrc, nest-cli.json, tsconfig.json, tsconfig.build.json, package.json 파일설명 * eslintrc.js: 개발자들이 특정한 규칙을 가지고 코드를 깔끔하게 짤수있게 도와주는 라이브러리 타입스크립트를 쓰는 가이드라인 제시, 문법에 오류가 나면 알려주는 역할 등등 * prettierrc: 주로 코드 형식을 맞추는데 사용합니다. 작은 따옴표(')를 사용할지 큰 따옴표(")를 사용할지, Indent 값을 2로 줄지 4로 줄지 등등, 에러를 찾는 것이 아닌 코드 포맷터 역할 * nest-cli.json: nest 프로젝트를 위해 특정한 설정을 할 수 있는 json 파일 * tsconfig.json: 어떻게 타입스크립트를 컴파일.. 2023. 2. 5.
반응형