Java와 SpringBoot를 이용하여 가상의 온라인 상점 API를 구현했습니다. 이 프로젝트는 FakeStoreAPI를 기반한 것으로, 이는 실제 상점의 다양한 기능을 제공하는 JavaScript 기반 오픈소스 API 서버입니다. 상품 조회, 장바구니 관리, 사용자 인증 등의 기능을 포함하고 있습니다.
- 개발언어: 자바
- IDE: IntellJ(Community Edition)
- 프로젝트 SDK: JDK 11 -> JDK 17 (23.08.06)
- Spring Boot: 2.7.13 -> 3.1.2 (23.08.06)
- 의존성 관리 툴: Maven
다음의 데이터를 추가해주세요.
- Products https://fakestoreapi.com/products
- Carts https://fakestoreapi.com/carts
모든 제품 가져오기
curl --location --request GET 'localhost:8080/products' \
--header 'Content-Type: application/json'
모든 제품 가져오기(페이지)
curl --location --request GET 'localhost:8080/products?page={pageNumber}' \
--header 'Content-Type: application/json'
단일 제품 가져오기
curl --location --request GET 'localhost:8080/products/{id}' \
--header 'Content-Type: application/json'
제품 가져오기(특정 개수)
curl --location --request GET 'localhost:8080/products?limit={num}' \
--header 'Content-Type: application/json'
결과 정렬 하기(asc/desc)
curl --location --request GET 'localhost:8080/products?sort=desc' \
--header 'Content-Type: application/json'
모든 카테고리 가져오기
curl --location --request GET 'localhost:8080/products/categories' \
--header 'Content-Type: application/json'
특정 카테고리의 제품 가져오기
curl --location --request GET 'localhost:8080/products/category/{categoryName}' \
--header 'Content-Type: application/json'
새로운 제품 추가
curl --location --request POST 'localhost:8080/products' \
--header 'Content-Type: application/json' \
--data-raw '{
"title": "test product",
"price": 13.5,
"description": "lorem ipsum set",
"image": "https://i.pravatar.cc",
"category": "electronic"
}'
제품 업데이트(PUT/PATCH)
curl --location --request PUT 'localhost:8080/products/{id}' \
--header 'Content-Type: application/json' \
--data-raw '{
"title": "test product",
"price": 13.5,
"description": "lorem ipsum set",
"image": "https://i.pravatar.cc",
"category": "electronic"
}'
curl --location --request PATCH 'localhost:8080/products/{id}' \
--header 'Content-Type: application/json' \
--data-raw '{
"title": "test product",
"price": 13.5,
"description": "lorem ipsum set",
"image": "https://i.pravatar.cc",
"category": "electronic"
}'
제품 삭제
curl --location --request DELETE 'localhost:8080/products/{id}'
--header 'Content-Type: application/json'
모든 카트 가져오기
curl --location --request GET 'localhost:8080/carts' \
--header 'Content-Type: application/json'
단일 카트 가져오기
curl --location --request GET 'localhost:8080/carts/{id}' \
--header 'Content-Type: application/json'
카트 가져오기(특정 개수)
curl --location --request GET 'localhost:8080/carts?limit={num}' \
--header 'Content-Type: application/json'
결과 정렬 하기(asc/desc)
curl --location --request GET 'localhost:8080/carts?sort=desc' \
--header 'Content-Type: application/json'
날짜 범위 안의 카트 가져오기
curl --location --request GET 'localhost:8080/carts?startdate=2019-12-10&enddate=2020-10-10'
User의 카트 가져오기
curl --location --request GET 'localhost:8080/carts/user/{userId}'
새로운 카트 추가
curl --location --request POST 'localhost:8080/carts' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 1,
"userId": 2,
"date": "2020-03-01T00:00:00.000Z",
"products": [
{
"productId": 1,
"quantity": 2
},
{
"productId": 9,
"quantity": 1
}
]
}'
카트 업데이트(PUT/PATCH)
curl --location --request PUT 'localhost:8080/carts/3' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 3,
"userId": 8,
"date": "2020-03-01T00:00:00.000Z",
"products": [
{
"productId": 18,
"quantity": 1
}
]
}'
curl --location --request PATCH 'localhost:8080/carts/3' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 3,
"userId": 8,
"date": "2020-03-01T00:00:00.000Z",
"products": [
{
"productId": 18,
"quantity": 1
}
]
}'
카트 삭제
curl --location --request DELETE 'localhost:8080/carts/{id}'
--header 'Content-Type: application/json'
회원가입
curl --location --request POST 'localhost:8080/members/signup' \
--header 'Content-Type: application/json' \
--data-raw '{
"name":"이름",
"email":"이메일",
"password":"8자이상,대소문자특수문자섞은암호",
"birthYear":"년도",
"birthMonth":"월",
"birthDay":"일",
"gender": "M or F"
}'
로그인
curl --location --request POST 'localhost:8080/members/login' \
--header 'Content-Type: application/json' \
--data-raw '{
"email":"이메일",
"password":"암호"
}'
회원정보 읽어오기
curl --request GET 'http://localhost:8080/members/info' \
--header 'Authorization: Bearer 엑세스키' \
--header 'Content-Type: application/json'
로그아웃
curl --location --request DELETE 'http://localhost:8080/members/logout' \
--header 'Authorization: Bearer accessToken' \
--header 'Content-Type: application/json' \
--data '{
"refreshToken" : "리프래시토큰"
}'
리프레시 토큰
curl --location --request POST 'http://localhost:8080/members/refreshToken' \
--header 'Content-Type: application/json' \
--data '{
"refreshToken" : "리프래시토큰"
}'