HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🌟
Programmers 최종 플젝 6조
/
📄
[공통] API 명세서
📄

[공통] API 명세서

📢
명세서 보기 전 참고할 사항 - 응답 항목에서 events{name, expired_at, ...} 와 같이 {} 표기된 부분은 리스트를 나타냄 - 예 : API-04는 이벤트 리스트(events)를 응답으로 주며, 각 이벤트 별로 name, expired_at, market_name, like_count, review_count, like, remaining_participants 데이터 포함
💡
데이터 타입
🔤 : String
1️⃣ : Number
📅 : 날짜
🕙 : 날짜 & 시간 🖼️ : 이미지
⁉️ : Boolean
👯‍♂️ : List → ex) ["abc", "bcd", "edf"]

Date Format

  • 날짜 & 시간: yyyy-MM-dd HH:mm:ss // 생성날짜, 수정 시간 .. server time 그대로 적용한 포맷
  • 날짜: yyyy-MM-dd // post 쓸때 날짜 지정했을때 다음 형식으로 request하고, response도 string도

Status Code

  • get → 200 ok
  • put → 204 no-content
  • patch → 204 no-content
  • post → 201 created
    • Location: /posts/{postId} → 요게 안되면
  • delete → 200 ok (응답 바디 있을 경우) vs 204 no-content (응답 바디 없을 경우)
 
API 목록(번호, 기능, 연관 페이지, URI, 응답, 요청 정보 포함)
완료
번호
연관 페이지
기능
권한
제약조건
URI
HTTP method
상태코드(정상)
응답
요청(header)
요청(path parameter)
요청(query string)
요청(body)
상태코드(실패)
완료
API-01
login
로그인
anonymous
/login
post
200
header( X-AUTH-TOKEN: 사용자 토큰 ) userId1️⃣, email🔤, nickname🔤
email(🔤), password(🔤)
완료
API-02
register
회원가입
anonymous
/signup
post
201
email(🔤), password🔤), nickname(🔤)
완료
API-03
register
닉네임 및 이메일 중복 확인
anonymous
사용자
사업자
/signup/check (예: /signup/check?type={nickname or email}&value = {data})
get
200
type🔤("nickname" 또는 "email"), value🔤
unExist type - 400
conflict - 409
완료
API-04
home
이벤트 리스트 조회
anonymous
사용자
사업자
/events
get
200
events{eventId1️⃣, name🔤, expiredAt🕙, marketName🔤, likeCount1️⃣, reviewCount1️⃣, isLike⁉️, remainingParticipants1️⃣, pictureUrl🔤}
사용자 토큰(X-AUTH-TOKEN)
location🔤, sort = 정렬 필드명, desc page1️⃣, size1️⃣ 🖐️ 정렬 필드명 : "createdAt" 또는 "expiredAt" 또는 "likeCount"
완료
API-05
event-detail
이벤트 상세 조회
anonymous
사용자
사업자
/events/{eventId}
get
200
name🔤, expiredAt🕙, marketName🔤, marketDescription🔤, eventDescription🔤, isLike⁉️, isFavorite⁉️, pictures👯‍♂️, participateStatus🔤, marketId1️⃣, remainingParticipants1️⃣
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
완료
API-06
event-detail
이벤트 리뷰 목록 조회
anonymous
사용자
사업자
/events/{eventId}/reviews
get
200
reviews{reviewId1️⃣, description🔤, pictureUrls🔤, memberId1️⃣, memberNickname🔤, createdAt🕙}
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
sort = createdAt, desc page1️⃣, size1️⃣
완료
API-07
coupon-issue(사용자)
리뷰 작성
사용자
사업자
이벤트 참여 완료한 사용자 및 사업자
/events/{eventId}/reviews
post
201
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
description(🔤) picture(🖼️)
unauthorized - 401
완료
API-08
coupon-issue(사업자)
이벤트 작성
사업자
가게 생성한 사업자
/events
post
201
사용자 토큰(X-AUTH-TOKEN)
marketId1️⃣, name🔤, description🔤, expiredAt🕙, maxParticipants1️⃣, pictures👯‍♂️)
완료
API-09
home
event-detail
좋아요 등록
사용자
사업자
/likes/events/{eventId}
post
201
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
완료
API-10
home
event-detail
좋아요 취소
사용자
사업자
좋아요 등록한 사용자 및 사업자
/likes/events/{eventId}
delete
204
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
완료
API-11
home
event-detail
즐겨찾기 등록
사용자
사업자
/favorites/markets/{marketId}
post
201
사용자 토큰(X-AUTH-TOKEN)
marketId1️⃣
완료
API-12
home
event-detail
즐겨찾기 취소
사용자
사업자
즐겨찾기 등록한 사용자 및 사업자
/favorites/markets/{marketId}
delete
204
사용자 토큰(X-AUTH-TOKEN)
marketId1️⃣
완료
API-13
user-profile
즐겨찾기 목록 조회
사용자
사업자
/members/{memberId}/favorites/markets
get
200
markets{marketId1️⃣, name🔤, favoriteCount1️⃣}
사용자 토큰(X-AUTH-TOKEN)
memberId1️⃣
sort = createdAt, desc page1️⃣, size1️⃣
완료
API-14
user-profile
좋아요 목록 조회
사용자
사업자
/members/{memberId}/likes/events
get
200
events{eventId1️⃣, expiredAt🕙, name🔤, marketName🔤, likeCount1️⃣, reviewCount1️⃣}
사용자 토큰(X-AUTH-TOKEN)
memberId1️⃣
sort = createdAt, desc page1️⃣, size1️⃣
완료
API-15
user-profile
사용자 참여 이벤트 목록 조회
사용자
사업자
/members/{memberId}/events
get
200
events{eventId1️⃣, expiredAt🕙, name🔤, marketName🔤, likeCount1️⃣, reviewCount1️⃣, isLike⁉️, isCompleted⁉️}
사용자 토큰(X-AUTH-TOKEN)
memberId1️⃣
sort = createdAt, desc page1️⃣, size1️⃣
완료
API-16
user-profile
user-detail
사용자 내가 쓴 리뷰 조회, 리뷰어 (리뷰정보) 조회
anonymous
사용자
사업자
/members/{memberId}/reviews
get
200
reviews{reviewId1️⃣, description🔤, marketName🔤, pictureUrl🔤}, reviewerEventCount1️⃣, reviewerReviewCount1️⃣
사용자 토큰(X-AUTH-TOKEN)
memberId1️⃣
sort = createdAt, desc page1️⃣, size1️⃣
완료
API-17
user-profile
사용자 정보 수정
사용자
사업자
/members
put
201
사용자 토큰(X-AUTH-TOKEN)
nickname🔤, password🔤, email🔤
완료
API-18
user-profile
사용자 정보 조회
사용자
사업자
/members
get
200
email🔤, nickname🔤
사용자 토큰(X-AUTH-TOKEN)
완료
API-19
사업자 전환 페이지
가게정보 등록
사용자
(사용자에서 사업자 권한으로 변경됨)
/markets
post
201
사용자 토큰(X-AUTH-TOKEN)
name🔤, location🔤, description🔤
완료
API-20
shop-detail
사업자의 가게 조회
사업자
/markets
get
200
markets{marketId1️⃣, name, description🔤, eventCount1️⃣, likeCount1️⃣, reviewCount1️⃣}
사용자 토큰(X-AUTH-TOKEN)
완료
API-21
coupon-issue(사업자)
가게의 이벤트 목록 조회
사업자
/markets/{marketId}/events
get
200
event{eventId1️⃣, expiredAt🕙, name🔤, marketName🔤, likeCount1️⃣, reviewCount1️⃣}
사용자 토큰(X-AUTH-TOKEN)
marketId1️⃣
sort = createdAt, desc page1️⃣, size1️⃣
완료
API-22
shop-detail
이벤트 정보 수정
사업자
/events/{eventId}
patch
201
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
description🔤
완료
API-23
event-detail
이벤트 참여(사용자)
사용자
사업자
/events/{eventId}/participants
post
201
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
완료
API-24
event-detail
이벤트 참여(사업자 수락)
사용자
사업자
/events/{eventId}/participants
patch
201
사용자 토큰(X-AUTH-TOKEN)
eventId1️⃣
완료
API-25
로그아웃
사용자
사업자
/logout
get
200
사용자 토큰(X-AUTH-TOKEN)
완료
API-26
기존 비밀번호 일치 확인
사용자
사업자
/members/check/password
post
201
사용자 토큰(X-AUTH-TOKEN)
password(🔤)
완료
API-27
유저 토큰정보 만료 확인
사용자
사업자
/members/check/token
get
200
userId1️⃣, email🔤, nickname🔤
사용자 토큰(X-AUTH-TOKEN)
완료
API-28
마켓 단일 조회
사용자
사업자
현재 UI에서 호출될 일이 없는 API
/markets/{marketId}
get
200
marketId1️⃣, name🔤, description🔤, address🔤
사용자 토큰(X-AUTH-TOKEN)
marketId1️⃣
완료
API-29
가게 정보 수정
사업자
/markets/{marketId}
patch
201
사용자 토큰(X-AUTH-TOKEN)
marketId1️⃣
description🔤
 

API 이슈사항 - 프론트엔드 확인 필요

  • 이벤트 상세 페이지에서 이벤트 참여 가능한 사람의 수가 필요 없는지??
  • 사업자 등록 시 가게 설명 누락되어있는데, 이 정보는 입력하지 않는 것인지?
  • API-16 은 사용자의 리뷰 정보를 조회한다는 맥락에서 동일한 API로 볼 수 있는데, 하나의 API로 합쳐도 되는지?
    • 다른 사용자에 대한 리뷰 정보를 조회할 때에는 참여 이벤트 수와 리뷰 작성 수가 필요 없지만, 백엔드 쪽에서는 모든 정보를 보내면 프론트 쪽에서 이 정보를 사용하지 않으면 될 것으로 보임
    • 프론트에서 API 구분이 필요하다고 하면 분리할 수 있습니당!!ㅎㅎ
  • user-profile 화면의 활동 내역에서 음영 처리되어 있는 이벤트는 마감 일자가 지난 이벤트인지? 아니면 참여 완료한 이벤트인지? 아님 둘 다 인지? 확인 필요
 
 
  • API-16
    • memberId, authorize 사용자 정보와 일치 : 내 리뷰 정보 조회 리스트 반환
      • reviewerEventCount=null, reviewerReviewCount=null
    • memberId, authorize 사용자 정보와 불일치 : 리뷰어 조회 리스트 반환
⇒ 일관성 있게 데이터 전달해주신다면 좋을 거 같아요! 여기서의 질문에 대해 답변 드리자면 저 두 옵션(reviewerEventCount, reviewerReviewCount) 모두 authorize에 상관 없이 응답해주셔도 좋을 거 같습니다! (왜냐하면, 보안상으로도 큰 문제가 없는 데이터이기 때문, 프론트에서 분류가능하기 때문)
 
  • API-17
    • 프로필 수정에서 닉네임 중복 확인 버튼이 추가되어야 할 것 같음
    • ⇒ 네 넣겠습니다. 감사합니다!
    • 프로필 수정할 때 닉네임과 비밀번호는 모두 같이 수정되는 것이 맞는지 프론트 확인 필요!
      • UI 상에는 둘 다 수정해야 수정 완료되는 것으로 보임
      ⇒ 프론트에서 닉네임/비밀번호를 입력할 때, 기존 비밀번호를 반드시 입력하게 하고 →
      1. 만약 닉네임만 바꾸는 경우 → 닉네임 + 기존 비밀번호로 PUT 요청
      1. 닉네임과 비밀번호 바꾸는 경우 → 기존 비밀번호 확인 후 닉네임 + 새로운 비밀번호로 PUT 요청
      1. 비밀번호만 바꾸는 경우 → 기존 비밀번호 확인, 새로운 비밀번호로 PUT 요청 닉네임/비밀번호/비밀번호변경을 할 때 PUT을 할 예정입니다. 이때 변경해주시면 좋을 듯 합니다.
      💡
      기존 비밀번호 재확인 로직이 백엔드에 반드시 있어야 할 것 같아요! 만약 기존 비밀번호와 틀리다면, 에러를 내뱉어야 할 것 같습니다! 혹시 파라미터로 기존 비밀번호 넘겨드려도 괜찮나요? (아니면, null값으로 넘겨줄 경우 백엔드 측에서 password를 넣어주는 방법이 있을까요?)
 
  • API-21
    • 사업자의 가게 이벤트 조회 시 좋아요 여부를 표시해야 되는지?
      • UI 상에는 표시되어 있지만, 필요 없다고 생각함(사업자 계정에서는)
      ⇒ 편하신대로. 상관 없습니다.
       
  • API-5
    • participateStatus 반환 : "notParticipated", "participated", "completed”
    •  

프론트엔드 API 명세서

프론트엔드에서 처리하는 API
이름
담당자
API_END_POINT
기능
params
body
headers
response
주소 검색 API