상품 단건 조회
Request
CURL
$ curl 'https://localhost:8443/api/products/1' -i -X GET \
-H 'Accept: */*'
HTTPie
$ http GET 'https://localhost:8443/api/products/1' \
'Accept:*/*'
Request HTTP Example
GET /api/products/1 HTTP/1.1
Accept: */*
Host: localhost:8443
Response
Response Fields
필드 | 타입 | 필수값 | 설명 | 제한 |
---|---|---|---|---|
name |
String |
true |
상품 이름 |
|
description |
String |
true |
설명 |
|
productImage |
String |
사진 |
||
price |
Number |
true |
가격 |
|
stock |
Number |
true |
재고 |
|
createdDateTime |
String |
true |
등록일 |
|
productCategory |
String |
true |
분류 |
|
region |
String |
true |
지역 |
|
memberResponse |
Object |
true |
판매자 |
Response HTTP Example
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
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
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
Content-Length: 999
{
"name" : "panda",
"description" : "nice bear",
"productImage" : null,
"memberResponse" : {
"id" : 4,
"email" : "panda@naver.com",
"nickname" : "panda",
"profileImage" : null,
"phone" : "01012345678",
"license" : null,
"createdDateTime" : "2021-10-25T01:13:51.055049",
"lastModifiedDateTime" : "2021-10-25T01:13:51.055049",
"leaveDateTime" : null,
"authority" : null,
"address" : {
"city" : "seoul",
"street" : "yeonhui",
"zipcode" : "01023"
},
"authProvider" : null,
"status" : "ACTIVE"
},
"price" : 50000,
"stock" : 15000,
"createdDateTime" : "2021-10-25T01:13:51.057058",
"productCategory" : "MEAT",
"region" : "CHUNGCHEONGBUKDO",
"_links" : {
"self" : {
"href" : "https://localhost:8443/api/products/1"
},
"modify-product" : {
"href" : "https://localhost:8443/api/products/1"
},
"delete-product" : {
"href" : "https://localhost:8443/api/products/1"
}
}
}
상품 다건 조회
Request
CURL
$ curl 'https://localhost:8443/api/products' -i -X GET \
-H 'Accept: */*'
HTTPie
$ http GET 'https://localhost:8443/api/products' \
'Accept:*/*'
Request HTTP Example
GET /api/products HTTP/1.1
Accept: */*
Host: localhost:8443
Response
Response Fields
필드 | 타입 | 필수값 | 설명 | 제한 |
---|---|---|---|---|
_embedded.productResponseList[].name |
String |
true |
상품 이름 |
|
_embedded.productResponseList[].memberResponse |
Object |
true |
판매자 |
|
_embedded.productResponseList[].description |
String |
true |
설명 |
|
_embedded.productResponseList[].productImage |
String |
사진 |
||
_embedded.productResponseList[].price |
Number |
true |
가격 |
|
_embedded.productResponseList[].stock |
Number |
true |
재고 |
|
_embedded.productResponseList[].createdDateTime |
Varies |
true |
상품 등록일 |
|
_embedded.productResponseList[].productCategory |
String |
true |
상품 분류 |
|
_embedded.productResponseList[].region |
String |
true |
지역 |
Response HTTP Example
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
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
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
Content-Length: 1107
{
"_embedded" : {
"productResponseList" : [ {
"name" : "panda",
"description" : "nice bear",
"productImage" : null,
"memberResponse" : {
"id" : 5,
"email" : "panda@naver.com",
"nickname" : "panda",
"profileImage" : null,
"phone" : "01012345678",
"license" : null,
"createdDateTime" : "2021-10-25T01:13:51.096262",
"lastModifiedDateTime" : "2021-10-25T01:13:51.096262",
"leaveDateTime" : null,
"authority" : null,
"address" : {
"city" : "seoul",
"street" : "yeonhui",
"zipcode" : "01023"
},
"authProvider" : null,
"status" : "ACTIVE"
},
"price" : 50000,
"stock" : 15000,
"createdDateTime" : "2021-10-25T01:13:51.098958",
"productCategory" : "MEAT",
"region" : "CHUNGCHEONGBUKDO"
} ]
},
"_links" : {
"self" : {
"href" : "https://localhost:8443/api/products?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
상품 추가
Request
CURL
$ curl 'https://localhost:8443/api/products' -i -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"name" : "apple",
"email" : "panda@naver.com",
"description" : "delicious",
"productImage" : "yaho",
"price" : 3000,
"stock" : 50000,
"region" : "CHUNGCHEONGBUKDO",
"productCategory" : "FRUIT"
}'
HTTPie
$ echo '{
"name" : "apple",
"email" : "panda@naver.com",
"description" : "delicious",
"productImage" : "yaho",
"price" : 3000,
"stock" : 50000,
"region" : "CHUNGCHEONGBUKDO",
"productCategory" : "FRUIT"
}' | http POST 'https://localhost:8443/api/products' \
'Content-Type:application/json;charset=UTF-8'
Request Fields
필드 | 타입 | 필수값 | 설명 | 제한 |
---|---|---|---|---|
name |
String |
true |
상풍 이름 |
문자 형식 6-24자 |
String |
true |
판매자 |
이메일 형식 9-64자 |
|
description |
String |
true |
상품 설명 |
자유 형식 빈 값 허용 안함 |
productImage |
String |
상품 이미지 |
문자 형식 최대 255자 |
|
price |
Number |
true |
가격 |
숫자 형식 |
stock |
Number |
true |
재고 |
숫자 형식 |
region |
String |
true |
지역 |
Region class 참고 |
productCategory |
String |
true |
판매자 |
ProductCategory class 참고 |
Request HTTP Example
POST /api/products HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 212
Host: localhost:8443
{
"name" : "apple",
"email" : "panda@naver.com",
"description" : "delicious",
"productImage" : "yaho",
"price" : 3000,
"stock" : 50000,
"region" : "CHUNGCHEONGBUKDO",
"productCategory" : "FRUIT"
}
Response
Response HTTP Example
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
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
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
상품 수정
Request
CURL
$ curl 'https://localhost:8443/api/products/1' -i -X PATCH \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"name" : "bear",
"description" : "good panda",
"productImage" : null,
"price" : null,
"stock" : null,
"region" : null,
"productCategory" : null
}'
HTTPie
$ echo '{
"name" : "bear",
"description" : "good panda",
"productImage" : null,
"price" : null,
"stock" : null,
"region" : null,
"productCategory" : null
}' | http PATCH 'https://localhost:8443/api/products/1' \
'Content-Type:application/json;charset=UTF-8'
Request Fields
필드 | 타입 | 필수값 | 설명 | 제한 |
---|---|---|---|---|
name |
String |
상풍 이름 |
문자 형식 6-24자 |
|
description |
String |
상품 설명 |
자유 형식 빈 값 허용 안함 |
|
productImage |
String |
상품 이미지 |
문자 형식 최대 255자 |
|
price |
Number |
가격 |
숫자 형식 |
|
stock |
Number |
재고 |
숫자 형식 |
|
region |
String |
지역 |
Region class 참고 |
|
productCategory |
String |
판매자 |
ProductCategory class 참고 |
Request HTTP Example
PATCH /api/products/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 161
Host: localhost:8443
{
"name" : "bear",
"description" : "good panda",
"productImage" : null,
"price" : null,
"stock" : null,
"region" : null,
"productCategory" : null
}
Response
Response HTTP Example
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
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
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
Content-Length: 825
{
"name" : "bear",
"description" : "good panda",
"productImage" : null,
"memberResponse" : {
"id" : 6,
"email" : "panda@naver.com",
"nickname" : "panda",
"profileImage" : null,
"phone" : "01012345678",
"license" : null,
"createdDateTime" : "2021-10-25T01:13:51.152869",
"lastModifiedDateTime" : "2021-10-25T01:13:51.152869",
"leaveDateTime" : null,
"authority" : null,
"address" : {
"city" : "seoul",
"street" : "yeonhui",
"zipcode" : "01023"
},
"authProvider" : null,
"status" : "ACTIVE"
},
"price" : 50000,
"stock" : 15000,
"createdDateTime" : "2021-10-25T01:13:51.155197",
"productCategory" : "MEAT",
"region" : "CHUNGCHEONGBUKDO",
"_links" : {
"self" : {
"href" : "https://localhost:8443/api/products/1"
}
}
}
상품 단건 삭제
Request
CURL
$ curl 'https://localhost:8443/api/products/1' -i -X DELETE
HTTPie
$ http DELETE 'https://localhost:8443/api/products/1'
Request HTTP Example
DELETE /api/products/1 HTTP/1.1
Host: localhost:8443
Response
Response HTTP Example
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
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
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
관리자 전용 상품 다건 조회
Request
CURL
$ curl 'https://localhost:8443/api/products/admin' -i -X GET \
-H 'Content-Type: application/json;charset=UTF-8'
HTTPie
$ http GET 'https://localhost:8443/api/products/admin' \
'Content-Type:application/json;charset=UTF-8'
Request HTTP Example
GET /api/products/admin HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8443
Response
Response Fields
필드 | 타입 | 필수값 | 설명 | 제한 |
---|---|---|---|---|
_embedded.productResponseList[].name |
String |
true |
상풍 이름 |
|
_embedded.productResponseList[].description |
String |
true |
상품 설명 |
|
_embedded.productResponseList[].price |
Number |
true |
가격 |
|
_embedded.productResponseList[].stock |
Number |
true |
재고 |
|
_embedded.productResponseList[].region |
String |
true |
지역 |
|
_embedded.productResponseList[].productCategory |
String |
true |
판매자 |
|
_embedded.productResponseList[].productImage |
String |
상품 이미지 |
||
_embedded.productResponseList[].memberResponse |
Object |
true |
판매자 |
Response HTTP Example
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
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
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
Content-Length: 1112
{
"_embedded" : {
"productResponseList" : [ {
"name" : "panda",
"description" : "nice bear",
"productImage" : null,
"memberResponse" : {
"id" : 7,
"email" : "panda@naver.com",
"nickname" : "panda",
"profileImage" : null,
"phone" : "01012345678",
"license" : null,
"createdDateTime" : "2021-10-25T01:13:51.204335",
"lastModifiedDateTime" : "2021-10-25T01:13:51.204335",
"leaveDateTime" : null,
"authority" : null,
"address" : {
"city" : "seoul",
"street" : "yeonhui",
"zipcode" : "01023"
},
"authProvider" : null,
"status" : "ACTIVE"
},
"price" : 50000,
"stock" : 15000,
"createdDateTime" : "2021-10-25T01:13:51.20718",
"productCategory" : "MEAT",
"region" : "CHUNGCHEONGBUKDO"
} ]
},
"_links" : {
"self" : {
"href" : "https://localhost:8443/api/products/admin?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}