HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 08] 사이코
[팀 08] 사이코
/
📶
API 설계
📶

API 설계

  • 개발 서버
    • http://ec2-15-164-204-95.ap-northeast-2.compute.amazonaws.com:8080/
  • 배포 도메인
    • https://bidmarket-api.shop/api/v1
  • 나눴던 이유
    • https를 적용하는데 이슈가 있어서 https를 적용하지 않은 개발 인스턴스를 따로 분리했었음 현재는 나눠 놓은 의미가 거의 없음 (코드가 같음)
 
  • Category: 앞으로 영어로 보내야 합니다
DIGITAL_DEVICE("디지털 기기"), HOUSEHOLD_APPLIANCE("생활 가전"), FURNITURE("가구/인테리어"), CHILDREN_BOOK("유아 도서"), FOOD("생활/가공 식품"), SPORTS_LEISURE("스포츠/레저"), WOMAN_GOODS("여성 잡화"), WOMAN_CLOTHES("여성 의류"), MAN_FASHION_GOODS("남성패션/잡화"), HOBBY("게임/취미"), BEAUTY("뷰티/미용"), PET_SUPPLY("반려 동물 용품"), BOOK_TICKET_RECORD("도서/티켓/음반"), PLANT("식물"), ETC("기타 중고 물품"), ALL("전체");
 
유저
Description
Method
URL Patterns
인증 필요 여부
📃
로그인
GET
http://ec2-15-164-204-95.ap-northeast-2.compute.amazonaws.com:8080/oauth2/authorization/google
X
📃
회원 정보 수정
PATCH
api/v1/users
O
📃
회원 판매상품 조회
GET
api/v1/users/{id}/products
X
📃
회원 정보 조회
GET
api/v1/users/{id}
X
📃
로그인 검증 회원 조회
GET
api/v1/users/auth
O
📃
회원 입찰상품 조회
GET
api/v1/users/biddings
O
📃
회원 탈퇴
DELETE
api/v1/users
O
📃
상품 찜 여부 확인
GET
api/v1/users/{productId}/hearts
O
📃
상품 찜하기 + 찜 취소하기
PUT
api/v1/users/{productId}/hearts
O
📃
회원 찜한 상품 조회
GET
api/v1/users/hearts
O
📃
회원 탈퇴
DELETE
api/v1/users
O
 
상품
Description
Method
URL Patterns
인증 필요 여부
📃
상품 전체 조회
GET
api/v1/products
X
📃
상품 검색
GET
api/v1/products
X
📃
상품 상세 조회
GET
api/v1/products/{id}
X
📃
상품 등록
POST
api/v1/products
O
 
입찰
Description
Method
URL Patterns
인증 필요 여부
📃
상품 입찰
POST
api/v1/biddings
O
📃
상품 입찰 결과 조회
GET
api/v1/products/{productId}/result
O
📃
특정 상품의 본인 비딩 금액 조회
GET
api/v1/biddings/products/{productId}
O
 
댓글
Description
Method
URL Patterns
인증 필요 여부
📃
댓글 생성
POST
api/v1/comments
O
📃
댓글 조회
GET
api/v1/comments
O
 
신고
Description
Method
URL Patterns
인증 필요 여부
📃
신고하기
POST
api/v1/reports
O
 
알림
Description
Method
URL Patterns
인증 필요 여부
📃
알림 전체 조회
GET
api/v1/notifications
O
📃
알림 확인
PUT
api/v1/notifications/{notificationId}
O
 
채팅
Description
Method
URL Patterns
인증 필요 여부
📃
채팅방 목록 조회
GET
api/v1/chatRooms
O
📃
채팅방 메시지 조회
GET
api/v1/chatRooms/{id}/messages
O
📃
웹소켓 STOMP 연결
WebSocket
wss://{baseUrl}/ws-stomp
X
📃
웹소켓 채팅
WebSocket
X
 
 
상품 카테고리 종류
DIGITAL_DEVICE("디지털 기기"), HOUSEHOLD_APPLIANCE("생활 가전"), FURNITURE("가구/인테리어"), CHILDREN_BOOK("유아 도서"), FOOD("생활/가공 식품"), SPORTS_LEISURE("스포츠/레저"), WOMAN_GOODS("여성 잡화"), WOMAN_CLOTHES("여성 의류"), MAN_FASHION_GOODS("남성패션/잡화"), HOBBY("게임/취미"), BEAUTY("뷰티/미용"), PET_SUPPLY("반려 동물 용품"), BOOK_TICKET_RECORD("도서/티켓/음반"), PLANT("식물"), ETC("기타 중고 물품"); -> 한글로 보내셔야 합니다.
 

 

API 목록

서버에 배포된 api는 체크합니다.
 

완료

상품 등록
상품 상세조회
상품 전체조회
유저 수정기능
회원 입찰 상품 목록 with Token
응답
Response [ { "id": Number, "title": String, "thumbnailImage": String, "minimumPrice": Number, "expireAt": Date, "createdAt": Date, "updatedAt": Date, }, {} // 유사 데이터 limit 개수만큼 반환 ]
회원 정보
응답
Response { "encodedId": String; "thumbnailImg": S3url //초기에는 구글프로필 url을 갖고 있습니다. 추후에 처리하겠습니다. "username": string; }
회원 판매 상품 목록
응답
Response [ { "id": Number, "title": String, "thumbnailImage": String, "minimumPrice": Number, "expireAt": Date, "createdAt": Date, "updatedAt": Date, }, {} // 유사 데이터 limit 개수만큼 반환 ]
입찰 API
요청/응답
Resquest { "productId": Number, "biddingPrice": Number, } Response { id : Number // 생성된 bidding에 대한 아이디 }
로그인한 유저 정보 API with Token
응답
  • 회원 정보랑 다른 것임
  • 토큰이랑 보낼 것임
Response { "encodedId": string; "thumbnailImg": S3url //초기에는 구글프로필 url을 갖고 있습니다. 추후에 처리하겠습니다. "username": string; }
 
 
 

진행

 
알림 조회 API with Token
응답
// 알림 페이지 진입시 response [ { "notificationId": number; "product": { "id": number; "title": string; "description": string; } } ]
[논의중] 본인이 해당상품의 입찰자인지 확인하는 API with Token
요청 응답
// 입찰하기 버튼 클릭시 request { "productId": number; } response { "isBid": boolean; "user": { "id": number; "biddingPrice": number; } }
[논의중] 낙찰되었는지 확인 API with Token [논의중]
  • 입찰자(입찰자, 낙찰자) → 본인이 낙찰자인지 확인
요청
// 상품 상세 조회의 expireAt값이랑 현재시간 비교하여 종료되었으면 // (토큰 존재 확인후) 낙찰자인지 확인 API 요청 request // 상품생성 API와 동일 { "productId": number; "userId": number; // 입찰자 } response { "당신이 낙찰자인가": boolean; "채팅방 id": number; "채팅 상대 닉네임": string; }
시퀀스 다이어 그램
notion image
[논의중] 낙찰되었는지 확인 API with Token[논의중]
  • 판매자 → 낙찰되었는지 확인
요청
// 상품 상세 조회의 expireAt값이랑 현재시간 비교하여 종료되었으면 // (토큰 존재 확인후) 낙찰자인지 확인 API 요청 request // 상품생성 API와 동일 { "productId": number; "userId": number; // 입찰자 } response { "낙찰자가 있는 상품인가": boolean; "채팅방 id": number; "채팅 상대 닉네임": string; }
시퀀스 다이어 그램
notion image
  • 당신은 낙찰자 인가 / 낙찰자가 있는 상품인가
    • False / False
    • True / True
    • False / True
      • True / False ← 불가능
채팅 목록 API with Token
요청
Get api/v1/chatRooms?offset=&limit=

QueryParam

  • offset (필수)
    • 상품 번호(index)
    • 0부터 시작
  • limit (필수)
    • 한번에 받아오는 상품 개수
    • 1부터 시작
응답
// 채팅 목록 페이지 진입시 (만약 API로 목록을 불러온다면) response [ { "chatRoomId": 2, "productInfo": { "productId": 2, "thumbnailImage": "https://user-images.githubusercontent.com/61923768/182771448-d2eefc50-7f3a-4582-8eb7-e91ebb9e94d0.png" }, "opponentUserInfo": { "username": "유재희", "profileImage": "https://lh3.googleusercontent.com/a/AItbvmmujg3pE4C3iRbHWRZCd-BtvUykZ2BaaIAuSoo7=s96-c" }, "lastMessage": "마지막 메세지", "lastMessageDate": "2022-08-10T13:13:54" } ]
  • 응답에 데이터가 없을 경우 빈배열을 반환합니다
찜하기 API with Token
요청
// 찜하기 버튼 클릭시 request { "userId": number; "productId": number; }
찜 취소하기 API with Token
요청
// 찜 취소하기 버튼 클릭시 request { "userId": number; "productId": number; }
찜한 상품 조회 API with Token
응답
// 회원정보 - 찜한 상품목록 페이지 진입시 response // 입찰상품 목록 조회와 동일 [ { "id": Number, "title": String, "thumbnailImage": String, "minimumPrice": Number, "expireAt": Date, "createdAt": Date, "updatedAt": Date, }, {} // 유사 데이터 limit 개수만큼 반환 ]
탈퇴하기 API with Token
요청
// 탈퇴하기 버튼 클릭시 request { "userId": number; }
신고하기 API with Token
Case
  • 회원 신고
    • where : 채팅방에서
    • 신고 대상 회원 정보
  • 게시글 신고
    • where : 상품 상세 페이지에서
    • 신고 대상 회원 정보, 상품에 대한 정보와 함께
  • 댓글 신고
    • where : 상품 상세 페이지에서
    • 신고 대상 회원 정보, 상품 에 대한 정보 와 함께
 
 
  • > 찜하기/찜 취소하기 -> 내가 상품을 찜했는지의 여부(상세페이지 조회 때 확인) -> 메인페이지에서 상품마다 찜이 몇개있는지 보내주기 -> 유저의 찜한 상품 리스트 보여주기
 

대기

재입찰(입찰 수정) API with Token
요청 응답
// 재입찰-완료 버튼 클릭시 request { "productId": number; "user": { "id": number; "biddingPrice": number; } } response { "id": Number // 생성된 비딩의 식별자 }
입찰 취소 API with Token
요청
// 입찰취소 버튼 클릭시 request { "productId": number; "userId": number; }
상품 수정 API with Token
요청
// 수정하기 버튼 클릭시 request // 상품생성 API와 동일 { "images": [], //최대: 5개 "title": String, //최대: 32자 "minimumPrice": Number, //최소: 1000원 "category": String, <- 영어 이름(DIGITAL_DEVICE)!! "location": String, "description": String, //최대: 500자 }