상품
전체 상품 목록 조회
페이지 별로 상품 목록 조회 가능 페이지 당 9개의 상품이 리턴 된다.
쿼리 스트링
Parameter | Description |
---|---|
|
첫 페이지는 0(default: 0) |
요청 예시
GET /products?page=0 HTTP/1.1
Host: localhost:8080
응답 예시
{
"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
}
개별 상품 상세 조회
요청 예시
GET /products/1 HTTP/1.1
Host: localhost:8080
응답 예시
{
"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
}
개별 상품 상세 조회 - 없는 상품 조회 시
존재 하지 않는 상품 번호로의 요청
요청 예시
GET /products/150 HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "해당 상품을 찾을 수 없습니다:150",
"status" : 404
}
}
회원
이메일 중복 확인
요청 예시
POST /check HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 33
Host: localhost:8080
{
"email" : "test@test.com"
}
응답 예시
{
"success" : true,
"response" : null,
"error" : null
}
이메일 중복 확인 - 이미 존재하는 이메일인 경우
요청 예시
POST /check HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 38
Host: localhost:8080
{
"email" : "ssarmango@nate.com"
}
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "동일한 이메일이 존재합니다 : ssarmango@nate.com",
"status" : 400
}
}
회원가입
요청 예시
POST /join HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 91
Host: localhost:8080
{
"email" : "test@test.com",
"password" : "test1234!",
"username" : "test_test"
}
응답 예시
{
"success" : true,
"response" : null,
"error" : null
}
회원가입
요청 예시
POST /join HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 91
Host: localhost:8080
{
"email" : "test@test.com",
"password" : "test1234!",
"username" : "test_test"
}
응답 예시
{
"success" : true,
"response" : null,
"error" : null
}
회원가입 - 올바르지 않은 양식
status 400으로 잘못된 내용은 에러메시지에 작성되어 돌아온다.
요청 예시
POST /join HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 82
Host: localhost:8080
{
"email" : "test",
"password" : "test1234!",
"username" : "test_test"
}
-
이메일 형식(정규식: ^@[\w.-]\.[a-zA-Z]{2,6}$)
password
-
8자 ~ 20자
-
영문, 숫자, 특수문자가 포함되어하고 공백이 포함되서는 안된다.
username
-
8자 ~ 45자
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "이메일 형식으로 작성해주세요:email",
"status" : 400
}
}
회원가입 - 이미 존재하는 이메일
요청 예시
POST /join HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 96
Host: localhost:8080
{
"email" : "ssarmango@nate.com",
"password" : "test1234!",
"username" : "test_test"
}
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "동일한 이메일이 존재합니다 : ssarmango@nate.com",
"status" : 400
}
}
로그인
요청 예시
POST /login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 67
Host: localhost:8080
{
"email" : "ssarmango@nate.com",
"password" : "meta1234!"
}
응답 예시
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzc2FybWFuZ29AbmF0ZS5jb20iLCJyb2xlIjoiUk9MRV9VU0VSIiwiaWQiOjEsImV4cCI6MTY5MTIwNDUyN30.-w0MvysHdE669Zad5cTl8GDGCczLmj0IhVnImTML9jDSrGFasqgaCjdCmL-Q44wS5wKqIiU4UPOGheQhqk6DRg
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 65
{
"success" : true,
"response" : null,
"error" : null
}
로그인 - 올바르지 않은 양식
요청 예시
POST /login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 66
Host: localhost:8080
{
"email" : "ssarmango@nate.com",
"password" : "meta1234"
}
-
이메일 형식(정규식: ^@[\w.-]\.[a-zA-Z]{2,6}$)
password
-
8자 ~ 20자
-
영문, 숫자, 특수문자가 포함되어하고 공백이 포함되서는 안된다.
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "영문, 숫자, 특수문자가 포함되어야하고 공백이 포함될 수 없습니다.:password",
"status" : 400
}
}
로그인 - 실패
-
email 없을 시 : "이메일을 찾을 수 없습니다"
-
password 검증 실패 시 : "패스워드가 잘못입력되었습니다"
요청 예시
POST /login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 68
Host: localhost:8080
{
"email" : "ssarmango@nate.com",
"password" : "meta1234!!"
}
-
이메일 형식(정규식: ^@[\w.-]\.[a-zA-Z]{2,6}$)
password
-
8자 ~ 20자
-
영문, 숫자, 특수문자가 포함되어하고 공백이 포함되서는 안된다.
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "패스워드가 잘못입력되었습니다",
"status" : 400
}
}
장바구니
장바구니 담기
장바구니에 담을 옵션과 양을 전달
요청 예시
POST /carts/add HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 45
Host: localhost:8080
[ {
"optionId" : 3,
"quantity" : 5
} ]
응답 예시
{
"success" : true,
"response" : null,
"error" : null
}
장바구니 담기 - 올바르지 않은 양식
옵션의 크기는 1 이상이여야한다.
요청 예시
POST /carts/add HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 46
Host: localhost:8080
[ {
"optionId" : 3,
"quantity" : -5
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "수량은 양수여야합니다.:list[0].quantity",
"status" : 400
}
}
장바구니 담기 - 중복된 옵션
동일한 옵션이 여러개 들어와서는 안된다.
요청 예시
POST /carts/add HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 88
Host: localhost:8080
[ {
"optionId" : 3,
"quantity" : 5
}, {
"optionId" : 3,
"quantity" : 5
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "동일한 요청이 여러개 들어올 수 없습니다.",
"status" : 400
}
}
장바구니 담기 - 존재하지 않는 옵션
존재하지 않는 옵션을 담을 수 없다.
요청 예시
POST /carts/add HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 47
Host: localhost:8080
[ {
"optionId" : 100,
"quantity" : 5
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "해당 옵션을 찾을 수 없습니다 : 100",
"status" : 404
}
}
장바구니 조회
요청 예시
GET /carts HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : true,
"response" : {
"products" : [ {
"id" : 1,
"productName" : "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전",
"carts" : [ {
"id" : 1,
"option" : {
"id" : 1,
"optionName" : "01. 슬라이딩 지퍼백 크리스마스에디션 4종",
"price" : 10000
},
"quantity" : 5,
"price" : 50000
}, {
"id" : 2,
"option" : {
"id" : 2,
"optionName" : "02. 슬라이딩 지퍼백 플라워에디션 5종",
"price" : 10900
},
"quantity" : 1,
"price" : 10900
} ]
}, {
"id" : 4,
"productName" : "바른 누룽지맛 발효효소 2박스 역가수치보장 / 외 7종",
"carts" : [ {
"id" : 3,
"option" : {
"id" : 16,
"optionName" : "선택02_바른곡물효소누룽지맛 6박스",
"price" : 50000
},
"quantity" : 5,
"price" : 250000
} ]
} ],
"totalPrice" : 310900
},
"error" : null
}
장바구니 조회 - 로그인 안했을 시
장바구니(/carts/**) API는 기본적으로 전부 로그인을 요구한다.
요청 예시
GET /carts HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "인증되지 않았습니다",
"status" : 401
}
}
장바구니 수정
-
주문하기를 할 때 장바구니 데이터를 update하고 그 결과를 응답받는다.
-
결재페이지에서 이 응답을 사용해도 되고, 다시 장바구니 조회 API를 사용해도 된다.
요청 예시
POST /carts/update HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 44
Host: localhost:8080
[ {
"cartId" : 1,
"quantity" : 10
} ]
응답 예시
{
"success" : true,
"response" : {
"carts" : [ {
"cartId" : 1,
"optionId" : 1,
"optionName" : "01. 슬라이딩 지퍼백 크리스마스에디션 4종",
"quantity" : 10,
"price" : 100000
}, {
"cartId" : 2,
"optionId" : 2,
"optionName" : "02. 슬라이딩 지퍼백 플라워에디션 5종",
"quantity" : 1,
"price" : 10900
}, {
"cartId" : 3,
"optionId" : 16,
"optionName" : "선택02_바른곡물효소누룽지맛 6박스",
"quantity" : 5,
"price" : 250000
} ],
"totalPrice" : 360900
},
"error" : null
}
장바구니 수정 - 올바르지 않은 양식
옵션의 크기는 1 이상이여야한다.
요청 예시
POST /carts/update HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 45
Host: localhost:8080
[ {
"cartId" : 1,
"quantity" : -10
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "수량은 양수여야합니다.:list[0].quantity",
"status" : 400
}
}
장바구니 수정 - 장바구니가 비어 있을 때
회원의 장바구니가 비어 있을 경우, 수정 할 수 있는게 존재 하지 않아 api를 사용할 수 없다.
요청 예시
POST /carts/update HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 44
Host: localhost:8080
[ {
"cartId" : 1,
"quantity" : 10
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "사용자의 장바구니가 존재하지 않습니다.",
"status" : 404
}
}
장바구니 수정 - 중복된 장바구니 번호
동일한 옵션이 여러개 들어와서는 안된다.
요청 예시
POST /carts/update HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 86
Host: localhost:8080
[ {
"cartId" : 1,
"quantity" : 10
}, {
"cartId" : 1,
"quantity" : 10
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "동일한 요청이 여러개 들어올 수 없습니다.",
"status" : 400
}
}
장바구니 수정 - 유저가 가지고 있지 않은 장바구니 번호 요청
가지고 있는 장바구니만을 수정할 수 있다.
요청 예시
POST /carts/update HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 46
Host: localhost:8080
[ {
"cartId" : 100,
"quantity" : 10
} ]
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "장바구니 번호가 잘못되었습니다.:100",
"status" : 400
}
}
주문
주문하기
장바구니에 존재하는 옵션들을 주문 데이터로 바꾸고 장바구니를 비운다.
요청 예시
POST /orders/save HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : true,
"response" : {
"id" : 2,
"products" : [ {
"productName" : "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전",
"items" : [ {
"id" : 4,
"optionName" : "01. 슬라이딩 지퍼백 크리스마스에디션 4종",
"quantity" : 5,
"price" : 50000
}, {
"id" : 5,
"optionName" : "02. 슬라이딩 지퍼백 플라워에디션 5종",
"quantity" : 1,
"price" : 10900
} ]
}, {
"productName" : "바른 누룽지맛 발효효소 2박스 역가수치보장 / 외 7종",
"items" : [ {
"id" : 6,
"optionName" : "선택02_바른곡물효소누룽지맛 6박스",
"quantity" : 5,
"price" : 250000
} ]
} ],
"totalPrice" : 310900
},
"error" : null
}
주문하기 - 장바구니가 비어 있을 시
주문할 상품 정보인 장바구니가 존재하지 않으면 주문할 수 가 없다.
요청 예시
POST /orders/save HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "사용자의 장바구니가 존재하지 않습니다.",
"status" : 404
}
}
주문 결과 확인
요청 예시
GET /orders/1 HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : true,
"response" : {
"id" : 1,
"products" : [ {
"productName" : "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전",
"items" : [ {
"id" : 1,
"optionName" : "01. 슬라이딩 지퍼백 크리스마스에디션 4종",
"quantity" : 5,
"price" : 50000
}, {
"id" : 2,
"optionName" : "02. 슬라이딩 지퍼백 플라워에디션 5종",
"quantity" : 1,
"price" : 10900
} ]
}, {
"productName" : "바른 누룽지맛 발효효소 2박스 역가수치보장 / 외 7종",
"items" : [ {
"id" : 3,
"optionName" : "선택02_바른곡물효소누룽지맛 6박스",
"quantity" : 5,
"price" : 250000
} ]
} ],
"totalPrice" : 310900
},
"error" : null
}
주문 결과 확인 - 존재 하지 않는 주문 번호
요청 예시
GET /orders/3 HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "존재하지 않는 주문입니다.",
"status" : 404
}
}
주문 결과 확인 - 다른 회원의 주문 번호 접근 시
각 회원의 주문 정보는 회원 자신만 볼 수 있다.
요청 예시
GET /orders/1 HTTP/1.1
Host: localhost:8080
응답 예시
{
"success" : false,
"response" : null,
"error" : {
"message" : "허용되지 않은 접근입니다.",
"status" : 403
}
}