Skip to content

휴대전화번호 인증 API 구현 미션

Notifications You must be signed in to change notification settings

eojjeoda-nest/nest-phone-verify-1

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

13470ba · Feb 27, 2024

History

7 Commits
Feb 27, 2024
Feb 25, 2024
Nov 16, 2023
Nov 16, 2023
Nov 16, 2023
Nov 16, 2023
Feb 25, 2024
Feb 26, 2024
Nov 16, 2023
Feb 26, 2024
Feb 26, 2024
Nov 16, 2023
Nov 16, 2023
Feb 26, 2024

Repository files navigation

미션 - 휴대폰 인증 API

🎯 서버 세팅 방식

  • setup.sh 스크립트를 실행하여 서버를 세팅한다.
  • setup.sh 스크립트는 다음과 같은 작업을 수행한다.
    • orm typeorm, prisma, 패키지 매니저 npm, yarn, pnpm 선택
    • npm install | yarn | pnpm install 실행
./setup.sh

🔍 진행 방식

  • 미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다.
  • 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다.
  • 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다.

📮 미션 제출 방법

  • 미션 구현을 완료한 후 GitHub PR 요청을 통해 제출합니다.

테스트 실행 가이드

  • 터미널에서 npm run test 명령을 실행하여 모든 테스트가 아래와 같이 통과하는지 확인한다.
Ran all test suites.

🚀 기능 요구 사항

기본적으로 휴대전화 번호 인증을 위한 API를 구현한다.

예시)

  1. 010-1234-5678로 인증번호를 전송한다.
  2. 010-1234-5678로 전송된 인증번호를 입력하면 인증이 완료된다.

총 2개의 API 엔드포인트로 구성한다.

  • 휴대전화 번호를 인증번호를 전송하는 API

    • 실제 휴대전화 번호로 전송되는 것이 아니라, 휴대전화 번호를 입력하면 인증번호가 전송된다고 가정한다.
    • 인증번호은 인증 요청시간으로부터 5분간 유효하다고 가정한다.
    • 인증번호 전송시에는 API 응답으로 인증번호를 리턴한다.
  • 휴대전화 번호와 인증번호를 입력받아 인증하는 API

공통 필수 예외처리 사항

  • API에 요청받은 Body 값의 타입을 검증하여 올바르지 않은 타입일 경우 400 BadRequest 에러를 리턴해야한다.
  • API에 요청받은 Body 값의 필수 값이 누락되거나/빈 값인 경우 400 BadRequest 에러를 리턴해야한다.

API 요청/응답 요구 사항

  1. 모든 API의 요청/응답은 DTO를 통해 TypeSafe하게 이루어져야한다.
  2. DTO의 타입은 class-validator를 이용하여 검증한다.
  3. DTO 내부 요소의 명칭은 camelCase로 작성한다.

요청

  • 휴대전화 번호는 010-1234-5678과 같은 문자열 형식이다.
phoneNumber : 010-1234-5678
  • 인증번호는 6자리 랜덤 숫자 문자열이다.
code : 612131

응답

  • 인증번호 요청시 인증번호를 응답으로 리턴한다.
code : 612131
  • 인증 완료시 true를 응답으로 리턴한다.
result : true

🎯 프로그래밍 요구 사항

  • Javascript 코드가 아닌 Typescript 코드로만 구현해야 한다.

  • Swagger를 이용하여 API 명세를 작성한다.

  • package.json에 명시된 라이브러리만을 이용하여 구현한다.

  • eslint, prettier 등의 코드 포맷팅 라이브러리를 이용하여 제공된 코드 컨벤션에 맞추어 코드를 작성한다.

  • node, npm 버전은 package.json에 명시된 버전을 사용한다. Volta를 이용하여 node 버전을 관리한다.

  • (선택 사항) API 구현이 완료되고, 유닛 테스트, E2E 테스트등 모든 테스트 코드를 작성하여 테스트를 통과하면 굿!


✏️ 과제 진행 요구 사항

  • 미션은 nest-phone-verify 저장소를 Fork & Clone 하고 시작한다.
  • 기능을 구현하기 전 README.md에 구현할 기능/예외처리를 목록으로 정리해 추가한다.