api

부가설명
Tags
May 22, 2021 04:55 AM

[1] 로그인 api

request

  • email
  • pasword

response

  • JWT token ( access token, refresh token )

[2] 비밀번호를 잊으셨나요?

[2-1] email찾기

request

  • 가입시 입력한 휴대폰번호
    • 인증 (SMS)

response

  • 가입자 이메일

[2-2] password 찾기

1. request

  • 이메일
  • 가입시 입력한 휴대폰번호
    • 인증 (SMS)

1. response

  • ( 문자로 인증번호 전송 )
  • 인증번호 정상적으로 전송됐는지 여부 T/F

2. request

  • 인증번호

2. response

  • jwt
  • 인증번호와 일치여부 T/F
  • ( 임시 비밀번호 이메일로 전송 )

3. request (with JWT)

  • 새로운 비밀번호

[3] 회원가입

[3-1] 휴대폰 인증

1. request ( 별도의 인증서버 )

  • 휴대폰 번호

1. response ( 별도의 인증서버 )

  • 인증번호, 다른 데이터

2. request

  • 인증번호, 다른 데이터

2. response

  • 검증여부 T/F

[3-2] 닉네임 중복검증

request

  • 닉네임

response

  • 닉네임 중복 여부 T/F
  • ( 프론트 예외처리 → 검증완료 후에는 초기화 버튼이 생기면서 텍스트를 칠 수 없는 상태가 되고, 초기화 버튼을 클릭하면 다시 검증하도록 처리)

[3-3] 회원가입 요청

request

  • 이메일
  • 패스워드
  • 휴대폰번호
  • 닉네임
  • 성별 (남성 / 여성)
  • 생년월일 ( YYYY-MM-DD )
  • 약관동의여부 ( 미정 )

response

  • 회원가입 성공여부 T/F

[3-4] 로그인 요청

request

  • 이메일
  • 패스워드

response

  • JWT token ( access token, refresh token )

[4] 메인화면 (강의 리스트 출력)

[4-1] 메인화면 강의리스트 출력

1. request (GET)

  • 강의목록 요청 (별도의 데이터 없음)

1. response

  • 새로운 강의
newLecture : [ { id: number, // 강의id title: string, // 강의 제목 organization: string, // 자격단체 level: string, // 자격증 레벨 region: string, // 강의지역 maxPerson: number, // 최대수강인원 lectureHour: number, // 강의소요시간 image: URL, // 대표이미지 링크 heart: boolean, // 찜하기 여부 price: number, // 수강료 equipments: Array<string>, // 대여장비목록 }, ... ]
  • 인기 강의
popularLecture : [ { id: number, // 강의id title: string, // 강의 제목 organization: string, // 자격단체 level: string, // 자격증 레벨 region: string, // 강의지역 maxPerson: number, // 최대수강인원 lectureHour: number, // 강의소요시간 image: URL, // 대표이미지 링크 heart: boolean, // 찜하기 여부 price: number, // 수강료 equipments: Array<string>, // 대여장비목록 starAvg: float, // 평점 starNum: number, // 누적 평가개수 }, ... ]

[4-2] 더보기 클릭 (강의 리스트)

[4-2-1] 새로운 강의 목록

1. request (GET)

1. response

newLectures : [ { id: number, // 강의id title: string, // 강의 제목 organization: string, // 자격단체 level: string, // 자격증 레벨 region: string, // 강의지역 maxPerson: number, // 최대수강인원 lectureHour: number, // 강의소요시간 image: URL, // 대표이미지 링크 heart: boolean, // 찜하기 여부 price: number, // 수강료 equipments: Array<string>, // 대여장비목록 registrationDate: Date // 강의 등록날짜 }, ... ]

[4-3] 검색어 입력

[5] 강의상세

💡
강의장소가 달라지면 별도의 강의를 만들어야함.

1. request

  • id (강의 id)

1. response

강사 프로필 : { 강사id : number, // 강사 프로필페이지 이동용 이미지 : URL, // 강사 대표 이미지 강사소개 : string, 강사이름 : string, }
lectureDetail : { images: URL[], // 강의 이미지 배열 title: string, // 강의 제목 organization: string, // 자격단체 level: string, // 자격증 레벨 starAvg: float, // 평점 description: string // 강의 내용 설명 additionalServices: string[], // 강사가 입력한 태그 리스트 //강의등록 시 입력받을 필요가 있다. }
location:{ name: string, // 수영장 이름 address: string, // 주소 latitude: float, // 위도 longitude: float, // 경도 },
reviewList:{ avgScore: float, // 하나의 리뷰의 3가지 항목에 대한 평균점수 instructorScore: float, // 강사 평가 점수 lectureScore: float, // 강의 평점 locationScore: float, // 장소 평점 text: string, // 리뷰 내용 url: URL // 사진 }[]

2. request (찜하기/해제)

  • id (강의id)

2. response

  • T/F (찜하기 취소인지 아닌지)

[6] 강의 예약

[6-1] 예약 정보조회

1. request

  • id (강의 id)

1. response

예약가능날짜 : [ { "scheduleId" : 1, "period" : 3, "maxNumber" : 10, "scheduleDetails" : [ { "scheduleDetailId" : 2, "date" : "2021-03-01", "scheduleTimeDtoList" : [ { "scheduleTimeId" : 3, "startTime" : "13:00:00", "currentNumber" : 5 } ], "lectureTime" : "01:30:00", }, { "scheduleDetailId" : 2, "date" : "2021-03-02", "scheduleTimeDtoList" : [ { "scheduleTimeId" : 3, "startTime" : "13:00:00", "currentNumber" : 5 } ], "lectureTime" : "01:30:00", }, { "scheduleDetailId" : 2, "date" : "2021-03-03", "scheduleTimeDtoList" : [ { "scheduleTimeId" : 3, "startTime" : "13:00:00", "currentNumber" : 5 } ], "lectureTime" : "01:30:00", } ] } ]
대여장비목록: { 장비명: string, // 대여장비 이름 가격: number, // 장비대여 1개당 가격 사이즈종류: { size: number, // 대여장비 사이즈 quantity: number // 해당 사이즈의 잔여개수 }[], // 대여할 수 있는 사이즈 목록 }[]

[6-2] 예약하기

1. request

- 예약날짜 : { 날짜: Date, 시간: hh:mm }[] - 인원수 : number - 장비대여 : { 장비명: string, // 대여장비명 사이즈?: number // 사이즈(Optional) }[] - 최종결제가격 : number

— 결제모듈 —

1. response

  • 강의 예약 성공/실패 여부 T/F
  • 강의예약정보 (확인용)

[7] 강의등록

💡
카카오 지도에서도 명칭 검색이 안되면, 백엔드 검색 api 추가 필요할 수도 있음.

request

강의지역 : string, ( 온라인 | 서울 | 경기 | 인천 | 부산 | 경상,대구,울산 | 대전,충청 | 강원 | 광주,전라,제주 ) 강의종류 : string, ( 프리다이빙 | 스쿠버다이빙 ) 자격단체명 : string, ( AIDA | PADI | SSI ) 자격증종류 : string, ( level1 | level2 | level3 | level4 | level5 ) 강의내용 : string, 강의가격 : number, 강의이미지 : URL[], 강의소요시간 : number, 강의장소 : { 위도 : float, 경도 : float, 주소 : string, 이름 : string, }

response

  • 강의등록 완료 T/F

[8] 강의에 일정추가

request

일차 : number, // 단회차인지 다회차인지 구분 예약가능날짜 : { 날짜 : Date, 시간 : hh:mm[] }[], // 강의하는 날짜 선택 수강최대인원 : number,

response

  • 일정추가 완료 T/F
 

 

[9] 강사 전체일정 조회

1. request (일정조회)

  • id (강사id)

2. response

{ 강의id : number 강의지역 : string, 강의명 : string, 자격증명 : string, 예약가능날짜 : [ { "scheduleId" : 1, "period" : 3, "maxNumber" : 10, "scheduleDetails" : [ { "scheduleDetailId" : 2, "date" : "2021-03-01", "scheduleTimeDtoList" : [ { "scheduleTimeId" : 3, "startTime" : "13:00:00", "currentNumber" : 5 } ], "lectureTime" : "01:30:00", }, { "scheduleDetailId" : 2, "date" : "2021-03-02", "scheduleTimeDtoList" : [ { "scheduleTimeId" : 3, "startTime" : "13:00:00", "currentNumber" : 5 } ], "lectureTime" : "01:30:00", }, { "scheduleDetailId" : 2, "date" : "2021-03-03", "scheduleTimeDtoList" : [ { "scheduleTimeId" : 3, "startTime" : "13:00:00", "currentNumber" : 5 } ], "lectureTime" : "01:30:00", } ] } ] }[]

2. request ( 일정 하나 현황 상세조회 )

강의id : number, 일정id : number
notion image

2. response

{ 예약자id: number, 예약자이름: string, 명수: number 장비대여목록 : { 장비명 : name, 사이즈 : number | undefined }[] }[]

[10] 수강생 내강의 조회

request

  • 수강생id

response

{ 지역 : string, // 서울, 블라블라, ... 강의명 : string, 자격증명 : string, 예약날짜 : Date // MM-DD 예약시간 : hh:mm, // hh:mm 소요시간 : hh:mm, // hh:mm }[]

[11] 후기작성

request

강사점수 : float, 강의점수 : float, 장소점수 : float, 리뷰내용 : string, 사진 : URL[] // 최대3장

response

  • 후기작성 성공여부 T/F

[12] 후기 모아보기 (강사)

1. request (GET) ( 강의목록 )

1. response

{ 강의지역 : string, 강의제목 : string, 자격증명 : string, 리뷰평점 : float, 리뷰개수 : number }[]

2. request

  • 강의id

2. response

{ 리뷰작성날짜 : YY-MM-DD-hh:mm 강사점수 : float, 강의점수 : float, 장소점수 : float, 리뷰내용 : string, 사진 : URL[] // 최대3장 }[]
 

[13] 강의 좋아요 목록 ( 수강생 )

request (GET)

response

{ 강의id : number, 강의제목 : string, 자격증명 : string, 지역 : string, 최대인원 : number, 강의소요시간 : number, 대여장비목록 : string[], 평점 : float, 리뷰개수 : number }[]

[14] 강사 신청

request

프로필사진 : URL, // 1장 강사소개글 : string, 소속단체명 : string[], // 한명의 강사가 여러 단체에서 '강사' 자격증을 취득한 경우도 있음. 자격증사진 : URL[] // 여러장 가능

response

  • 신청 완료 여부 T/F

[15] 수입정산 —— 화면 나오면 다시

request

response

 

[16] 약관, 자주묻는질문, 공지사항

  • 약관은 프론트에서 정적페이지로 관리 고정
  • 질문,공지사항은 임시로 정적페이지로 관리 (추후 관리자 페이지)
 

[17] 커뮤니티 게시글 리스트 조회

request (GET)

  • params :커뮤니티 이름

response

{ 게시글id: number, 제목: string, 이미지?: URL, (Optional) 작성자: string, 작성날짜: Date(YY-MM-DD-hh:mm) 댓글개수: number, 좋아요개수: number, 내가좋아요누른여부: boolean }[]

[18] 게시글 좋아요 버튼

request

  • 게시글id

response

  • 성공실패여부 T/F

[19] 게시글 좋아요 목록

request (GET)

response

{ 게시글id: number, 제목: string, 이미지?: URL, (Optional) 작성자: string, 작성날짜: Date(YY-MM-DD-hh:mm) 댓글개수: number, 좋아요개수: number, 내가좋아요누른여부: boolean }[]
 

[20] 커뮤니티 글쓰기

request

카테고리이름 : string, 글제목 : string, 글내용 : string, (300자 이내) 사진 : URL[] (최대3개)

response

  • 글작성여부 T/F

[21] 게시글 상세조회

request

  • 게시글id

response

💡
JWT 토큰 안에 유저id 값 필요
{ 게시글id: number, 글제목: string, 작성자프로필사진: URL, 작성자이름: string, 작성자id: number (수정/삭제 띄우기 위해 필요), 작성날짜: Date(YY-MM-DD-hh:mm) 현재내가좋아요선택여부: boolean, 게시글사진 : URL[], }
 

[22] 게시글 댓글 조회

request

  • 게시글id

response

{ 댓글id: number, 작성자프로필이미지: URL, 작성자id: number, 작성자이름: string, 작성날짜: Date(YY-MM-DD-hh:mm), 댓글내용: string, depth: number, (댓글, 대댓글 여부) 대댓글: 댓글[] }

[23] 게시글 댓글,대댓글 작성

request

게시글id: number, 댓글내용: string, 댓글id?: number (Optional, 대댓글 다는 경우)

response

  • 작성여부 T/F

[24] 커뮤니티 작성 글 모아보기 (마이페이지)

request (GET)

response

{ 게시글id: number, 제목: string, 이미지?: URL, (Optional) 작성자: string, 작성날짜: Date(YY-MM-DD-hh:mm) 댓글개수: number, 좋아요개수: number, 내가좋아요누른여부: boolean }[]
 

관리자페이지 (미정), 웹으로 구현?

  • 강사수락
  • 공지사항 목록 조회, 작성, 수정, 삭제
  • 자주묻는 질문 목록 조회, 작성, 수정, 삭제
  • 정산페이지