본문 바로가기
반응형

분류 전체보기406

[NestJS] Parameters(매개변수)_Swagger Swagger에서 parameters(매개변수)의 선언 SwaggerModule은 경로 핸들러에서 모든 @Body(), @Query() 및 @Param() 데코레이터를 검색하여 API 문서를 생성한다. 리플렉션(reflection)을 활용하여 해당 모델 정의를 생성한다. @Post() async create(@Body() createUserDto: CreateUserDto) { this.usersService.create(createUserDto); } 본문 정의를 명시적으로 설정하려면 @ApiBody() 데코레이터(@nestjs/swagger 패키지)를 사용한다. CreateUserDto를 기반으로 다음 모델 정의 Swagger UI가 생성된다. export class CreateUserDto { na.. 2023. 2. 8.
useState로 배열, 객체의 값 변경(체크박스 구현) ReactNative, Nest.js 등에서 useState의 state, setState로 배열([]) 혹은 객체({})의 값 변경 배열의 값([]) 변경 배열의 값 변경에 실패하는 경우 const [checkList, setCheckList] = useState([]); ... /** * 체크박스 handler * @param e: React.ChangeEvent */ const onCheckHandler = (e: React.ChangeEvent) => { let changeList = checkList; // 배열의 주소를 공유하게 된다. changeList[Number(e.target.id)] = true; // 객체의 주소를 공유하기 때문에 원본의 내용도 함께 바뀐다. // setState는 .. 2023. 2. 8.
[NestJS] Security(보안) Nestjs에서 사용하는 보안 메커니즘 정의 및 인증 활성화(cookie, oAuth2 등) OpenAPI_Security(보안) 특정 작업에 사용해야 하는 보안 메커니즘을 정의하려면 @ApiSecurity() 데코레이터를 사용한다. @ApiSecurity('basic') @Controller('test') export class TestController {} 애플리케이션을 실행하기 전에 DocumentBuilder를 사용하여 기본 문서에 보안 정의를 추가해야 한다. const options = new DocumentBuilder().addSecurity('basic', { type: 'http', scheme: 'basic', }); 가장 널리 사용되는 인증 기술 중 일부는 내장되어 있다. (예: B.. 2023. 2. 7.
[NestJS] OpenAPI 데코레이터 종류 OpenAPI 데코레이터 종류 모음 사용 가능한 모든 OpenAPI 데코레이터는 핵심 데코레이터와 구별하기 위해 Api 접두사가 있다. import { IsString } from 'class-validator' import { ApiProperty } from '@nestjs/swagger' ... @IsString() @ApiProperty() name: string; ... @IsString() = 문자열(string)인지 판별하는 유효성 검사 데코레이터 (validation)로 class-validator에서 가져와서 사용할 수 있다. @ApiProperty() = 데코레이터는 nestjs/swagger에 자체 내장되어있는 데코레이터이고 type 인자로 해당 데코레이터로 데코레이팅 된 클래스를 넘.. 2023. 2. 7.
[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.
반응형