모든 HTTP 요청과 응답은 JSON 형식을 따릅니다.
GET /api/products HTTP/1.1HTTP/1.1 200
Content-Type: application/json
[
{
"id": 1,
"name": "아이스 카페 아메리카노 T",
"price": 4500,
"imageUrl": "https://st.kakaocdn.net/product/api/product/20231010111814_9a667f9eccc943648797925498bdd8a3.jpg"
},
{
"id": 2,
"name": "(ICE)아메리카노",
"price": 2000,
"imageUrl": "https://img1.kakaocdn.net/thumb/C320x320@2x.fwebp.q82/?fname=https%3A%2F%2Fst.kakaocdn.net%2Fproduct%2Fgift%2Fproduct%2F20220622112804_d176787353ab48c690936557eefad11c.jpg"
}
]GET /api/products/{productId} HTTP/1.1HTTP/1.1 200
Content-Type: application/json
{
"id": 1,
"name": "아이스 카페 아메리카노 T",
"price": 4500,
"imageUrl": "https://st.kakaocdn.net/product/api/product/20231010111814_9a667f9eccc943648797925498bdd8a3.jpg"
}POST /api/products HTTP/1.1
Content-Type: application/json
{
"name": "(ICE)아메리카노",
"price": 2000,
"imageUrl": "https://img1.kakaocdn.net/thumb/C320x320@2x.fwebp.q82/?fname=https%3A%2F%2Fst.kakaocdn.net%2Fproduct%2Fgift%2Fproduct%2F20220622112804_d176787353ab48c690936557eefad11c.jpg"
}HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 1,
"name": "(ICE)아케리카노",
"price": 2000,
"imageUrl": "https://img1.kakaocdn.net/thumb/C320x320@2x.fwebp.q82/?fname=https%3A%2F%2Fst.kakaocdn.net%2Fproduct%2Fgift%2Fproduct%2F20220622112804_d176787353ab48c690936557eefad11c.jpg"
}PUT /api/products/{productId} HTTP/1.1
Content-Type: application/json
{
"name": "[EVENT](ICE)아메리카노",
"price": 1600,
"imageUrl": "https://img1.kakaocdn.net/thumb/C320x320@2x.fwebp.q82/?fname=https%3A%2F%2Fst.kakaocdn.net%2Fproduct%2Fgift%2Fproduct%2F20250515110714_9664acdff2b84e4e806c4d7d55dd8de0.jpg"
}HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"name": "[EVENT](ICE)아메리카노",
"price": 1600,
"imageUrl": "https://img1.kakaocdn.net/thumb/C320x320@2x.fwebp.q82/?fname=https%3A%2F%2Fst.kakaocdn.net%2Fproduct%2Fgift%2Fproduct%2F20250515110714_9664acdff2b84e4e806c4d7d55dd8de0.jpg"
}DELETE /api/products/{productId} HTTP/1.1HTTP/1.1 204 No Content[GET] http://localhost:8080/admin/products
→ 등록된 모든 상품을 목록으로 확인할 수 있는 화면입니다.
[GET] http://localhost:8080/admin/products/{productId}
→ 선택한 상품의 상세 정보를 확인할 수 있는 화면입니다.
[GET] http://localhost:8080/admin/products/new
→ 새 상품을 입력하는 폼으로 이동합니다.
[POST] http://localhost:8080/admin/products
→ 폼에서 입력된 내용을 서버에 전송해 새 상품을 추가합니다.
[GET] http://localhost:8080/admin/products/{productId}/edit
→ 선택한 상품의 정보를 수정할 수 있는 화면입니다.
[PUT] http://localhost:8080/admin/products/{productId}
→ HTML <form>에서 _method=put로 전송되는 요청입니다.
→ 실제 HTTP 메서드는 POST이며,
→ AdminController에서 @PutMapping으로 처리합니다.
[DELETE] http://localhost:8080/admin/products/{productId}
→ HTML <form>에서 _method=delete로 전송됩니다.
→ 실제 HTTP 메서드는 POST이며,
→ AdminController에서 @DeleteMapping으로 처리합니다.
- JDBC URL:
jdbc:h2:mem:spring-gift - Username:
sa - Password: ``
create table product (
id bigint auto_increment primary key,
name varchar(255) not null,
price bigint not null,
image_url varchar(1000)
);