React & Redux 데스크탑 장바구니 애플리케이션
다수의 컴포넌트를 페이지로 구성하고 복잡해진 상태를 관리합니다.
✔️ 데스크탑 타겟
의 웹 앱을 구현하며 구매로 이어지는 것에 끊김이 없고 재방문을 고려한 UI/UX
에 대해 고민해봅니다.
✔️ 상태 관리를 위해 Flux Architecture
기반의 Redux
를 활용합니다.
✔️ Router
를 활용해 여러 페이지 전환을 고려합니다.
✔️ 배민상회 서비스 참고
react-shopping-cart/client 디렉토리에서 실행해주세요.
- 최초 실행 시
# npm
npm run server:first
# yarn
yarn server:first
- 이후 실행 시
# npm
npm run server
# yarn
yarn server
http://localhost:3003
method | uri |
---|---|
GET | /products |
{
"response": [
{
"id": 1,
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg"
},
{
"id": 2,
"price": 20000,
"name": "피자",
"imageUrl": "http://example.com/pizza.jpg"
}
]
}
method | uri |
---|---|
POST | /products |
{
"requestBody": {
"products": {
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg"
}
}
}
method | uri |
---|---|
GET | /products/{id} |
{
"response": {
"id": 1,
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg"
}
}
method | uri |
---|---|
DELETE | /products/{id} |
{
"response": {}
}
method | uri |
---|---|
GET | /carts |
{
"response": {
"id": 1,
"product": {
"name": "test",
"price": 1234,
"imageUrl": "test.com",
"id": 1
},
},
{
"id": 5,
"product": {
"name": "tes11111t",
"price": 1234,
"imageUrl": "test.com",
"id": 10
}
},
}
method | uri |
---|---|
POST | /carts |
{
"requestBody": {
"product": {
"id": 10,
"name": "tes11111t",
"price": 1234,
"imageUrl": "test.com"
}
}
}
method | uri |
---|---|
DELETE | /carts/{cartId} |
{
"response": {}
}
method | uri |
---|---|
POST | /orders |
{
"requestBody": {
"orderDetails": [
{
"id": 1,
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg",
"quantity": 5
},
{
"id": 2,
"price": 20000,
"name": "피자",
"imageUrl": "http://example.com/pizza.jpg",
"quantity": 3
}
]
}
}
method | uri |
---|---|
GET | /orders |
{
"response": [
{
"id": 1,
"orderDetails": [
{
"id": 1,
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg",
"quantity": 5
},
{
"id": 2,
"price": 20000,
"name": "피자",
"imageUrl": "http://example.com/pizza.jpg",
"quantity": 3
}
]
},
{
"id": 2,
"orderDetails": [
{
"id": 1,
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg",
"quantity": 5
},
{
"id": 2,
"price": 20000,
"name": "피자",
"imageUrl": "http://example.com/pizza.jpg",
"quantity": 3
}
]
}
]
method | uri |
---|---|
GET | /orders/{id} |
{
"response": {
"id": 1,
"orderDetails": [
{
"id": 1,
"price": 10000,
"name": "치킨",
"imageUrl": "http://example.com/chicken.jpg",
"quantity": 5
},
{
"id": 2,
"price": 20000,
"name": "피자",
"imageUrl": "http://example.com/pizza.jpg",
"quantity": 3
}
]
}
}