728x90
0628 TIL은 0627 적은 내용을 바탕으로 추가 내용을 작성하기때문에 같은 블로그 글에 작성했습니다.
과제명
1. 요구사항분석/API요청 및 응답 시나리오 분석
2. 요구사항 추가 반영 및 테이블 설계도
과제 설명
1. 요구사항 시나리오를 보고 부족해 보이는 기능을 하나 이상 체크하여 README에 내용을 작성하시오.
2. 제시된 화면설계를 보고 해당 화면설계와 배포된 기존 서버의 API주소를 매칭하여 README에 내용을 작성하시오. (카카오 화면설계 시나리오가 있음)
3. 배포된 서버에 모든 API를 POSTMAN으로 요청해본 뒤 응답되는 데이터를 확인하고 부족한 데이터가 무엇인지 체크하여 README에 내용을 작성하시오.
과제 상세 : 과제를 진행할 때, 유념해야할 것
- 부족한 기능에 대한 요구사항을 미리 예상할 수 있는가? (예를 들면 상품등록 api가 기존 요구사항에는 없는데 추후 필요하지는 않을지, 이런 부분들을 생각하였는지)
- 요구사항에 맞는 API를 분석하고 사용자 시나리오를 설계하였는가? (예를 들어 배포된 서버와 화면 설계를 제시해줄 예정인데, 특정 버튼을 클릭했을 때 어떤 API가 호출되어야 할지를 아는지)
1. 요구사항 분석 / API 요청 및 응답 시나리오 분석
1) 요구사항 시나리오를 보고 부족해 보이는 기능을 하나 이상 체크하여 README에 내용을 작성하시오.
회원인증
- 이메일(아이디) 중복 체크 기능
전체 상품 목록 조회
- 상품 검색 기능상품 선택
- 상품 옵션 삭제 기능
장바구니 조회
- 장바구니 상품 삭제 기능
- 장바구니에 이미 담겨진 상품 담을 경우 상품 옵션 업데이트하는 기능
결제
- 배송지 수정 기능
+ 개발 범위에 벗어나지만 필요한 기능
마이페이지
- 비밀번호 수정 기능
- 주문 내역 조회 기능
2) 제시된 화면설계를 보고 해당 화면설계와 배포된 기존 서버의 API주소를 매칭하여 README에 내용을 작성하시오. (카카오 화면설계 시나리오가 있음)
3) 배포된 서버에 모든 API를 POSTMAN으로 요청해본 뒤 응답되는 데이터를 확인하고 부족한 데이터가 무엇인지 체크하여 README에 내용을 작성하시오.
1. 쇼핑하기(Home page) : 전체 상품 목록 조회
- GET
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/products
- Param
page={number}
- Response Body
{ "success": true, "response": [ { "id": 1, "productName": "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전", "description": "", "image": "/images/1.jpg", "price": 1000 }, { "id": 2, "productName": "[황금약단밤 골드]2022년산 햇밤 칼집밤700g외/군밤용/생율", "description": "", "image": "/images/2.jpg", "price": 2000 }, { "id": 3, "productName": "삼성전자 JBL JR310 외 어린이용/성인용 헤드셋 3종!", "description": "", "image": "/images/3.jpg", "price": 30000 }, { "id": 4, "productName": "바른 누룽지맛 발효효소 2박스 역가수치보장 / 외 7종", "description": "", "image": "/images/4.jpg", "price": 4000 }, { "id": 5, "productName": "[더주] 컷팅말랑장족, 숏다리 100g/300g 외 주전부리 모음 /중독성 최고/마른안주", "description": "", "image": "/images/5.jpg", "price": 5000 }, { "id": 6, "productName": "굳지않는 앙금절편 1,050g 2팩 외 우리쌀떡 모음전", "description": "", "image": "/images/6.jpg", "price": 15900 }, { "id": 7, "productName": "eoe 이너딜리티 30포, 오렌지맛 고 식이섬유 보충제", "description": "", "image": "/images/7.jpg", "price": 26800 }, { "id": 8, "productName": "제나벨 PDRN 크림 2개. 피부보습/진정 케어", "description": "", "image": "/images/8.jpg", "price": 25900 }, { "id": 9, "productName": "플레이스테이션 VR2 호라이즌 번들. 생생한 몰입감", "description": "", "image": "/images/9.jpg", "price": 797000 } ], "error": null }
description은 사용하지 않으므로 삭제하는 것이 좋다.
2. 상품 선택 : 개별 상품 상세 조회
- GET
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/products/:id
- Response Body
{ "success": true, "response": { "id": 1, "productName": "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전", "description": "", "image": "/images/1.jpg", "price": 1000, "starCount": 5, "options": [ { "id": 1, "optionName": "01. 슬라이딩 지퍼백 크리스마스에디션 4종", "price": 10000 }, { "id": 2, "optionName": "02. 슬라이딩 지퍼백 플라워에디션 5종", "price": 10900 }, { "id": 3, "optionName": "고무장갑 베이지 S(소형) 6팩", "price": 9900 }, { "id": 4, "optionName": "뽑아쓰는 키친타올 130매 12팩", "price": 16900 }, { "id": 5, "optionName": "2겹 식빵수세미 6매", "price": 8900 } ] }, "error": null }
3. 장바구니 조회
- GET
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/carts
- Request Header
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzc2FyQG5hdGUuY29tIiwicm9sZSI6Il JPTEVfVVNFUiIsImlkIjoxLCJleHAiOjE2ODcwNTM5MzV9.fXlD0NZQXYYfPHV8rokRJTM86nhS869L Z1KIGi7_qvPOcVbXgvyZLKvnlLxomIiS3YFnQRLzXAJ2G41yI_AmGg
- Response Body
{ "success": true, "response": { "products": [ { "id": 1, "productName": "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전", "carts": [ { "id": 33, "option": { "id": 1, "optionName": "01. 슬라이딩 지퍼백 크리스마스에디션 4종", "price": 10000 }, "quantity": 5, "price": 50000 }, { "id": 34, "option": { "id": 2, "optionName": "02. 슬라이딩 지퍼백 플라워에디션 5종", "price": 10900 }, "quantity": 5, "price": 54500 }, { "id": 39, "option": { "id": 3, "optionName": "고무장갑 베이지 S(소형) 6팩", "price": 9900 }, "quantity": 8, "price": 79200 }, { "id": 40, "option": { "id": 4, "optionName": "뽑아쓰는 키친타올 130매 12팩", "price": 16900 }, "quantity": 5, "price": 84500 }, { "id": 31, "option": { "id": 5, "optionName": "2겹 식빵수세미 6매", "price": 8900 }, "quantity": 1, "price": 8900 } ] }, { "id": 2, "productName": "[황금약단밤 골드]2022년산 햇밤 칼집밤700g외/군밤용/생율", "carts": [ { "id": 44, "option": { "id": 6, "optionName": "22년산 햇단밤 700g(한정판매)", "price": 9900 }, "quantity": 8, "price": 79200 }, { "id": 45, "option": { "id": 7, "optionName": "22년산 햇단밤 1kg(한정판매)", "price": 14500 }, "quantity": 5, "price": 72500 }, { "id": 30, "option": { "id": 8, "optionName": "밤깎기+다회용 구이판 세트", "price": 5500 }, "quantity": 1, "price": 5500 } ] } ], "totalPrice": 434300 }, "error": null }
carts는 선택된 option과 담은 수량(quantity), 가격(price)을 포함한다.
로그인
- POST
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/login
- request body
{ "email":"ssar@nate.com", "password":"meta1234!" }
- Response Body
{ "success": true, "response": null, "error": null }
1. 이메일 중복 확인
- POST
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/check
- request body
{ "email":"meta@nate.com" }
- Response Body
{ "success": true, "response": null, "error": null }
2. 회원가입
- POST
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/join
- Request Body
{ "username":"meta", "email":"meta@nate.com", "password":"meta1234!" }
- Response Body
{ "success": true, "response": null, "error": null }
장바구니 담기
- POST
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/carts/add
- Request Header
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzc2FyQG5hdGUuY29tIiwicm9sZSI6Il JPTEVfVVNFUiIsImlkIjoxLCJleHAiOjE2ODcwNTM5MzV9.fXlD0NZQXYYfPHV8rokRJTM86nhS869L Z1KIGi7_qvPOcVbXgvyZLKvnlLxomIiS3YFnQRLzXAJ2G41yI_AmGg
- Request Body
[ { "optionId":1, "quantity":5 }, { "optionId":2, "quantity":5 } ]
- Response Body
{ "success": true, "response": null, "error": null }
존재하는 옵션 Id로 요청하면 오류가 난다. 장바구니(carts)에 같은 옵션이 중복되어 생기기 때문이다.
하지만 고객이 상품A를 장바구니에 담은 후 다른 상품들을 둘러보다가, 다시 상품A를 담을 경우 그만큼 수량이 더해져서 장바구니가 갱신되면 좋을 것 같다.
이를 위해 이미 존재하는 옵션 Id일 경우 서버에서 장바구니 수정(/update)을 호출하면 좋을 것 같다.
주문하기 (장바구니 수정)
- POST
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/carts/update
- Request Header
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzc2FyQG5hdGUuY29tIiwicm9sZSI6Il JPTEVfVVNFUiIsImlkIjoxLCJleHAiOjE2ODcwNTM5MzV9.fXlD0NZQXYYfPHV8rokRJTM86nhS869L Z1KIGi7_qvPOcVbXgvyZLKvnlLxomIiS3YFnQRLzXAJ2G41yI_AmGg
- Request Body
[ { "cartId":47, "quantity":10 }, { "cartId":48, "quantity":10 } ]
- Response Body
{
"success": true,
"response": {
"carts": [
{
"cartId": 30,
"optionId": 8,
"optionName": "밤깎기+다회용 구이판 세트",
"quantity": 1,
"price": 5500
},
{
"cartId": 31,
"optionId": 5,
"optionName": "2겹 식빵수세미 6매",
"quantity": 1,
"price": 8900
},
{
"cartId": 47,
"optionId": 31,
"optionName": "궁채 절임 1kg",
"quantity": 10,
"price": 69000
},
{
"cartId": 48,
"optionId": 32,
"optionName": "양념 깻잎 1kg",
"quantity": 10,
"price": 89000
}
],
"totalPrice": 592300
},
"error": null
}
응답에 상품 이름을 포함하는 것이 좋다. 상품명 밑에 옵션 등이 표시되기 때문이다.
1. 결제하기
- POST
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/orders/save
- Request Header
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzc2FyQG5hdGUuY29tIiwicm9sZSI6Il JPTEVfVVNFUiIsImlkIjoxLCJleHAiOjE2ODcwNTM5MzV9.fXlD0NZQXYYfPHV8rokRJTM86nhS869L Z1KIGi7_qvPOcVbXgvyZLKvnlLxomIiS3YFnQRLzXAJ2G41yI_AmGg
- Response Body
{
"success": true,
"response": {
"id": 8,
"products": [
{
"productName": "[황금약단밤 골드]2022년산 햇밤 칼집밤700g외/군밤용/생율",
"items": [
{
"id": 33,
"optionName": "밤깎기+다회용 구이판 세트",
"quantity": 2,
"price": 11000
},
{
"id": 34,
"optionName": "22년산 햇단밤 700g(한정판매)",
"quantity": 1,
"price": 9900
}
]
},
{
"productName": "[LIVE][5%쿠폰] 홈카페 Y3.3 캡슐머신 베이직 세트",
"items": [
{
"id": 35,
"optionName": "블랙",
"quantity": 1,
"price": 148000
},
{
"id": 36,
"optionName": "화이트",
"quantity": 3,
"price": 444000
}
]
}
],
"totalPrice": 612900
},
"error": null
}
온라인 쇼핑몰이라면, 요청을 보낼 때 배송지와 배송 요청사항, 배송비 정보를 함께 보내야 한다.
2. 주문 결과 확인 (결제 후)
- GET
http://kakao-app-env.eba-kfsgeb74.ap-northeast-2.elasticbeanstalk.com/orders/:id
- Request Header
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzc2FyQG5hdGUuY29tIiwicm9sZSI6Il JPTEVfVVNFUiIsImlkIjoxLCJleHAiOjE2ODcwNTM5MzV9.fXlD0NZQXYYfPHV8rokRJTM86nhS869L Z1KIGi7_qvPOcVbXgvyZLKvnlLxomIiS3YFnQRLzXAJ2G41yI_AmGg
- Response Body
{ "success": true, "response": { "id": 9, "products": [ { "productName": "[황금약단밤 골드]2022년산 햇밤 칼집밤700g외/군밤용/생율", "items": [ { "id": 37, "optionName": "밤깎기+다회용 구이판 세트", "quantity": 1, "price": 5500 }, { "id": 38, "optionName": "22년산 햇단밤 700g(한정판매)", "quantity": 2, "price": 19800 } ] }, { "productName": "굳지않는 앙금절편 1,050g 2팩 외 우리쌀떡 모음전", "items": [ { "id": 39, "optionName": "굳지않는 흰 가래떡 1050g", "quantity": 2, "price": 31800 } ] } ], "totalPrice": 57100 }, "error": null }
728x90
'Spring > 카테캠 - TIL' 카테고리의 다른 글
TIL [0630] : 1주차 - 연관관계 파악 및 ER-Diagram 작성 (0) | 2023.06.30 |
---|---|
TIL [0629] :1주차 - DB 테이블 Schema (MySQL) (0) | 2023.06.29 |
URL vs URI vs URN (0) | 2023.06.28 |
TIL [0626] - 클론 코딩 1주차 (0) | 2023.06.26 |
TIL [0612-0618] : 스프링 어노테이션 정리 (0) | 2023.06.18 |