프로그래밍/NestJS
NestJS 스웨거에서 에러 스키마 작성하기
카카수(kakasoo)
2023. 1. 31. 01:13
반응형
import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
export const ERROR = {
ALREADY_CREATED_EMAIL: { code: 4001, message: '이미 생성된 이메일입니다.' },
NO_AUTH_TOKEN: { code: 4002, message: '인증이 필요합니다.' },
IS_SAME_POSITION: { code: 4003, message: '이미지의 정렬 값이 동일한 경우가 존재합니다.' },
} as const;
type KeyOfError = keyof typeof ERROR;
type ValueOfError = (typeof ERROR)[KeyOfError];
export const createErrorSchema = (error: ValueOfError): SchemaObject => {
return {
type: 'object',
properties: {
code: { type: 'number', example: error.code },
message: { type: 'string', example: error.message },
},
};
};
@ApiOperation({ summary: '230129 - 게시글 조회 (incompleted)' })
@ApiOkResponse({ type: GetOneArticleResponseDto })
@ApiBadRequestResponse({
description: '이미지들 중 position이 null이 아니면서 동일하게 배정된 경우',
schema: createErrorSchema(ERROR.CANNOT_FINDONE_ARTICLE),
})
@ApiParam({ name: 'id', description: '조회하고자 하는 게시글의 id 값' })
@Get(':id')
async getOneDetailArticle(@UserId() userId: number, @Param('id', ParseIntPipe) articleId: number) {
const article = await this.articlesService.getOneDetailArticle(userId, articleId);
return article;
}
ERROR 객체에 미리 키 밸류로 에러 내용을 저장했다고 가정하자.
저런 객체 구조라면 아래의 createErrorSchema 함수를 이용해서 쉽게 schema를 표현해줄 수 있다.
반응형