📶
API 설계
- 나눴던 이유
- https를 적용하는데 이슈가 있어서 https를 적용하지 않은 개발 인스턴스를 따로 분리했었음 현재는 나눠 놓은 의미가 거의 없음 (코드가 같음)
- Category: 앞으로 영어로 보내야 합니다
http://ec2-15-164-204-95.ap-northeast-2.compute.amazonaws.com:8080/oauth2/authorization/google
api/v1/users/{id}/products
api/v1/users/{productId}/hearts
api/v1/users/{productId}/hearts
api/v1/products/{productId}/result
api/v1/biddings/products/{productId}
api/v1/notifications/{notificationId}
api/v1/chatRooms/{id}/messages
상품 카테고리 종류
API 목록
서버에 배포된 api는 체크합니다.
완료
로그인한 유저 정보 API with Token
진행
[논의중] 본인이 해당상품의 입찰자인지 확인하는 API with Token
[논의중] 낙찰되었는지 확인 API with Token [논의중]
- 입찰자(입찰자, 낙찰자) → 본인이 낙찰자인지 확인
요청
시퀀스 다이어 그램
[논의중] 낙찰되었는지 확인 API with Token[논의중]
요청
시퀀스 다이어 그램
- 당신은 낙찰자 인가 / 낙찰자가 있는 상품인가
- False / False
- True / True
- False / True
요청
응답
- 응답에 데이터가 없을 경우 빈배열을 반환합니다
Case
- 게시글 신고
- where : 상품 상세 페이지에서
- 신고 대상 회원 정보, 상품에 대한 정보와 함께
- 댓글 신고
- where : 상품 상세 페이지에서
- 신고 대상 회원 정보, 상품 에 대한 정보 와 함께
- > 찜하기/찜 취소하기
-> 내가 상품을 찜했는지의 여부(상세페이지 조회 때 확인)
-> 메인페이지에서 상품마다 찜이 몇개있는지 보내주기
-> 유저의 찜한 상품 리스트 보여주기
대기
재입찰(입찰 수정) API with Token
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("전체");
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("기타 중고 물품");
-> 한글로 보내셔야 합니다.
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 개수만큼 반환
]
Resquest
{
"productId": Number,
"biddingPrice": Number,
}
Response
{
id : Number // 생성된 bidding에 대한 아이디
}
Response
{
"encodedId": string;
"thumbnailImg": S3url //초기에는 구글프로필 url을 갖고 있습니다. 추후에 처리하겠습니다.
"username": string;
}
// 알림 페이지 진입시
response
[
{
"notificationId": number;
"product": {
"id": number;
"title": string;
"description": string;
}
}
]
// 입찰하기 버튼 클릭시
request
{
"productId": number;
}
response
{
"isBid": boolean;
"user": {
"id": number;
"biddingPrice": number;
}
}
// 상품 상세 조회의 expireAt값이랑 현재시간 비교하여 종료되었으면
// (토큰 존재 확인후) 낙찰자인지 확인 API 요청
request // 상품생성 API와 동일
{
"productId": number;
"userId": number; // 입찰자
}
response
{
"당신이 낙찰자인가": boolean;
"채팅방 id": number;
"채팅 상대 닉네임": string;
}
// 상품 상세 조회의 expireAt값이랑 현재시간 비교하여 종료되었으면
// (토큰 존재 확인후) 낙찰자인지 확인 API 요청
request // 상품생성 API와 동일
{
"productId": number;
"userId": number; // 입찰자
}
response
{
"낙찰자가 있는 상품인가": boolean;
"채팅방 id": number;
"채팅 상대 닉네임": string;
}
Get api/v1/chatRooms?offset=&limit=
// 채팅 목록 페이지 진입시 (만약 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"
}
]
// 찜하기 버튼 클릭시
request
{
"userId": number;
"productId": number;
}
// 찜 취소하기 버튼 클릭시
request
{
"userId": number;
"productId": number;
}
// 회원정보 - 찜한 상품목록 페이지 진입시
response // 입찰상품 목록 조회와 동일
[
{
"id": Number,
"title": String,
"thumbnailImage": String,
"minimumPrice": Number,
"expireAt": Date,
"createdAt": Date,
"updatedAt": Date,
},
{} // 유사 데이터 limit 개수만큼 반환
]
// 탈퇴하기 버튼 클릭시
request
{
"userId": number;
}
// 재입찰-완료 버튼 클릭시
request
{
"productId": number;
"user": {
"id": number;
"biddingPrice": number;
}
}
response
{
"id": Number // 생성된 비딩의 식별자
}
// 입찰취소 버튼 클릭시
request
{
"productId": number;
"userId": number;
}
// 수정하기 버튼 클릭시
request // 상품생성 API와 동일
{
"images": [], //최대: 5개
"title": String, //최대: 32자
"minimumPrice": Number, //최소: 1000원
"category": String, <- 영어 이름(DIGITAL_DEVICE)!!
"location": String,
"description": String, //최대: 500자
}