Skip to content

API 명세

건 edited this page Sep 15, 2023 · 9 revisions

사용자 인증

회원가입

Request

POST /api/v1/signup

{
    "password": "password",
    "passwordCheck": "password",
    "email": "admin@email.com",
    "nickname": "어드민"
}

Response

Success

HTTP 201

Fail

HTTP 상태 코드 메시지
400 이미 회원가입된 이메일입니다.
400 비밀번호와 비밀번호 확인이 서로 다릅니다.
400 유효하지 않은 이메일 형식입니다.
400 유효하지 않은 비밀번호 형식입니다.
400 누락된 항목이 있습니다. 누락된 항목: email
400 누락된 항목이 있습니다. 누락된 항목: password
400 누락된 항목이 있습니다. 누락된 항목: passwordCheck
400 누락된 항목이 있습니다. 누락된 항목: nickname

로그인

Request

POST /api/v1/login

{
    "password": "password",
    "email": "admin@email.com"
}

Response

Success

HTTP 200 

{
    "accessToken": "{Jwt}"
}

Fail

HTTP 상태 코드 메시지
400 이메일 혹은 비밀번호가 일치하지 않습니다. (미반영)
400 누락된 항목이 있습니다. 누락된 항목: email
400 누락된 항목이 있습니다. 누락된 항목: password

장바구니

장바구니 조회

Request

GET /api/v1/cart/items
Authorization: Bearer {Jwt}

Response

Success

HTTP 200

[
    {
        "cartItemId": 1,
        "name": "물",
        "imageFileName": "/water.jpg",
        "price": 10000,
        "quantity": 2,
        "soldOut": false,
    },
    {
        "id": 2,
        "name": "컴퓨터",
        "imageUrl": "/computer.jpg",
        "quantity": 1,
        "price": 10000,
        "quantity": 2,
        "soldOut": false,
    }
]

Fail

HTTP 상태 코드 메시지
401 로그인이 필요합니다.

장바구니에 아이템 추가

Request

POST /api/v1/cart/items
Authorization: Bearer {Jwt}

{
    "productId": 1,
}

Response

Success

HTTP 200

Fail

HTTP 상태 코드 메시지 비고
401 로그인이 필요합니다.
404 존재하지 않는 상품입니다.
400 장바구니에 이미 존재하는 상품입니다.
400 필수 항목이 누락되었습니다. productId가 없을 때
400 품절된 상품입니다.

장바구니 아이템 수량 변경

Request

PATCH /api/v1/cart/items/{cartItemId}
Authorization: Bearer {Jwt}

{
    "quantity": 5
}

Response

Success

HTTP 200

Fail

HTTP 상태 코드 메시지 비고
401 로그인이 필요합니다.
400 필수 항목이 누락되었습니다. 변경 수량 정보가 없을 때
404 존재하지 않는 장바구니 상품입니다. 타인의 장바구니 아이템에 접근할 때, 존재하지 않는 아이템에 접근할 때
400 장바구니 상품 수량은 1개 이상 1,000개 이하여야합니다.

장바구니 아이템 삭제

Request

DELETE /cart/items/{cartItemId}
Authorization: Bearer {Jwt}

Response

Success

HTTP 204

Fail

HTTP 상태 코드 메시지 비고
401 로그인이 필요합니다.
404 존재하지 않는 장바구니 상품입니다. 타인의 장바구니 아이템에 접근할 때, 존재하지 않는 아이템에 접근할 때

상품 관리

상품 전체 목록 조회

Request

GET /api/v1/products

Response

Success

HTTP 200

[
    {
        "id": 1,
        "name": "물",
        "imageFileName": "/water.jpg",
        "price": 10000,
        "stock": 200,
    },
    {
        "id": 2,
        "name": "컴퓨터",
        "imageFileName": "/computer.jpg",
        "price": 2000000,
        "stock": 15
    }
]

상품 상세 목록 조회

Request

GET /api/v1/products/{productId}

Response

Success

HTTP 200

{
    "id": 1,
    "name": "물",
    "imageFileName": "/water.jpg",
    "price": 10000,
    "stock": 200
}

Fail

HTTP 상태 코드 메시지
404 존재하지 않는 상품입니다.

상품 검색

상품 검색 및 정렬

Request

 GET /api/v1/products/search?keyword=물&sort=price,desc
 or
 GET /api/v1/products/search?keyword=물&sort=rate,desc&birthYearRange=THIRTIES&gender=MALE

Response

Success

HTTP 200

[
    {
        "id": 1,
        "name": "물",
        "imageFileName": "/water.jpg",
        "price": 10000,
        "stock": 200,
    },
    {
        "id": 2,
        "name": "물티슈",
        "imageFileName": "/water-tissue.jpg",
        "price": 2000,
        "stock": 1000,
    }
]

Fail

HTTP 상태 코드 메시지 비고
400 내용을 입력해 주세요. 키워드 없이 검색할 때
400 잘못된 정렬 기준입니다. 정렬 조건이 지원되지 않을 때

주문

주문 전체 내역 조회

Request

GET /api/v1/order-history
Authorization: Bearer {Jwt}

Response

Success

HTTP 200

[
    {
        "orderId": 2,
        "orderItems": [
            {
                "id": 3,
                "name": "책",
                "imageFileName": "/book.jpg",
                "price": 15000,
                "quantity": 1,
            },
            {
                "id": 4,
                "name": "마우스",
                "imageFileName": "/mouse.jpg",
                "price": 12000,
                "quantity": 1,
            }
        ]
    },
    {
        "orderId": 1,
        "orderItems": [
            {
                "id": 1,
                "name": "물",
                "imageFileName": "/water.jpg",
                "price": 10000,
                "quantity": 2,
            },
            {
                "id": 2,
                "name": "물티슈",
                "imageFileName": "/water-tissue.jpg",
                "price": 2000,
                "quantity": 3,
            }
        ]
    },
]

Fail

HTTP 상태 코드 메시지
401 로그인이 필요합니다.

주문 세부 내역 조회

Request

GET /api/v1/order/{orderId}
Authorization: Bearer {Jwt}

Response

Success

HTTP 200

{
    "orderId": 1,
    "orderName": "물 외 1건",
    "totalPrice": 26000,
    "orderItems": [
        {
            "id": 1,
            "name": "물",
            "imageFileName": "/water.jpg",
            "price": 10000,
            "quantity": 2,
        },
        {
            "id": 2,
            "name": "물티슈",
            "imageFileName": "/water-tissue.jpg",
            "price": 2000,
            "quantity": 3,
        }
    ]
}

Fail

HTTP 상태 코드 메시지
401 로그인이 필요합니다.
404 존재하지 않는 주문 내역입니다.

주문 요청

Request

POST /api/v1/order
Authorization: Bearer {Jwt}

Response

Success

HTTP 201
Location: /order/1

Fail

HTTP 상태 코드 메시지
401 로그인이 필요합니다.
400 장바구니가 비어있습니다.
400 품절된 상품입니다.
400 상품의 재고가 부족합니다.

주문 결제 요청

Request

PUT /api/v1/order
Authorization: Bearer {Jwt}

{
    "orderId": 1,
    "payType": "POINT"
}

Response

Success

HTTP 200

Fail

HTTP 상태 코드 메시지
401 로그인이 필요합니다.
400 상품의 재고가 부족합니다.
400 주문 상태가 올바르지 않습니다. (테스트 X)
404 존재하지 않는 주문입니다. (테스트 X)

결제

포인트 결제 요청

Request

POST /api/v1/pay/point
Authorization: Bearer {Jwt}

{
    "orderId": 1,
}

Response

Success

HTTP 200

{
    "orderId": 1
}

Fail

HTTP 상태 코드 메시지 비고
400 주문 상태가 올바르지 않습니다.
400 포인트가 부족합니다.
404 존재하지 않는 주문입니다. 다른 회원의 주문일 때, 존재하지 않는 주문일 때

토스 결제 요청

Request

POST /api/v1/pay/toss
Authorization: Bearer {Jwt}

{
    "orderId": 1
}

Response

Success

HTTP 200

{
    "orderId": 1
}

Fail

HTTP 상태 코드 메시지 비고
400 주문 상태가 올바르지 않습니다. 이미 결제된 주문일 때
404 존재하지 않는 주문입니다. 존재하지 않는 주문일 때, 다른 회원의 주문일 때

토스 결제 정보 조회 요청

Request

GET /api/v1/pay/toss?orderId={orderId}
Authorization: Bearer {Jwt}

Response

Success

HTTP 200

{
    "encodedOrderId": "MTEtLey5mO2CqC0tMjAyMy0wOC0xN1QxNzoyNzoxNy4zNDY3ODQ=",
    "orderName": "치킨 외 1건",
    "price": 45000,
    "customerEmail": "test_email@woowafriends.com",
    "customerName": "tester1",
    "customerKey": "c4ca4238-a0b9-3382-8dcc-509a6f75849b",
    "successUrl": "{ORIGIN}/pay/loading-popup",
    "failUrl": "{ORIGIN}/pay/fail-popup"
}

Fail

HTTP 상태 코드 메시지 비고
400 주문 상태가 올바르지 않습니다. 이미 결제된 주문일 때
404 존재하지 않는 주문입니다. 존재하지 않는 주문일 때, 다른 회원의 주문일 때

토스 결제 정보 승인 요청

Request

POST /api/v1/pay/toss
Authorization: Bearer {Jwt}

{
    "paymentKey": "...",
    "orderId": {base64 encoded},
    "amount": 20000,
    "paymentType": "..."
}

Response

Success

HTTP 200

{
    "orderId": 9
}

Fail

HTTP 상태 코드 메시지 비고
400 주문 상태가 올바르지 않습니다. 이미 결제된 주문일 때
404 존재하지 않는 주문입니다. 존재하지 않는 주문일 때, 다른 회원의 주문일 때
500 알수 없는 오류가 발생했습니다. 외부 API 호출에 실패했을 때

포인트

포인트 충전 요청

Request

PUT /api/v1/point
Authorization: Bearer {Jwt}

{
    "point": 10000,
}

Response

Success

HTTP 200

Fail

HTTP 상태 코드 메시지
400 포인트 충전 값은 0보다 커야 합니다.

포인트 조회 요청

Request

GET /api/v1/point
Authorization: Bearer {Jwt}

Response

Success

HTTP 200
{
    point: 1000
}

별점 리뷰

별점 생성

Request

POST /api/v1/rate
Authorization: Bearer {Jwt}


{
    "orderItemId": 1
    "score": 5
}

Response

HTTP 201

Fail

HTTP 상태 코드 메시지
400 별점은 0이상 5이하의 정수여야 합니다.
400 이미 평가를 완료한 주문 상품입니다.
404 존재하지 않는 주문 상품입니다.

별점 조회

Request

GET /api/v1/rate/product/{productId}

Response

HTTP 200

{
    "rateCount": 15
    "averageScore": 3.2
}

Fail

HTTP 상태 코드 메시지
404 존재하지 않는 상품입니다.

사용자의 주문 상품 별점 조회

Request

GET /api/v1/rate/orderItem/{orderItemId}
Authorization: Bearer {Jwt}

Response

HTTP 200

{
    "score": 5
}

Fail

HTTP 상태 코드 메시지
404 존재하지 않는 주문 평가 정보입니다.
Clone this wiki locally