# 개요

version 0.0.1-SNAPSHOT

## HTTP 동사

본 REST API에서 사용하는 HTTP 동사(verbs)는 가능한한 표준 HTTP와 REST 규약을 따릅니다.

동사 | 용례
--- | ---
`GET` | 리소스를 가져올 때 사용
`POST` | 새 리소스를 만들 때 사용
`PUT` | 기존 리소스를 수정할 때 사용
`PATCH` | 기존 리소스의 일부를 수정할 때 사용
`DELETE` | 기존 리소스를 삭제할 떄 사용

## HTTP 상태 코드

본 REST API에서 사용하는 HTTP 상태 코드는 가능한 표준 HTTP와 REST 규약을 따릅니다.

상태 코드 | 용례
--- | ---
`200 OK` | 요청을 성공적으로 처리함
`201 Created` | 새 리소스를 성공적으로 생성함. 응답의 `Location` 헤더에 해당 리소스의 URI가 담겨있다.
`204 No Content` | 기존 리소스를 성공적으로 수정함.
`400 Bad Request` | 잘못된 요청을 보낸 경우. 응답 본문에 더 오류에 대한 정보가 담겨있다.
`404 Not Found` | 요청한 리소스가 없음.
`409 Conflict` | 클라이언트의 요청이 서버의 상태와 충돌이 발생한 경우.

## snippets 작성 컨벤션

domain-httpRequestCode-etc

## 주문

### 점주 서비스 - 주문 페이지

- 페이지 offset : 6

#### Curl request

    $ curl 'http://127.0.0.1:8001/orderMain?orderDate=2022-02-03&lastOrderId=7' -i -X GET

#### HTTP request

    GET /orderMain?orderDate=2022-02-03&lastOrderId=7 HTTP/1.1
    Host: 127.0.0.1:8001

#### HTTP response

    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 769

    {
      "code" : "SUCCESS",
      "message" : "",
      "data" : [ {
        "orderId" : 1,
        "userId" : 1,
        "userName" : "닉네임",
        "orderItemResponses" : [ {
          "orderItemId" : 100,
          "itemId" : 100,
          "itemName" : "아이템1"
        }, {
          "orderItemId" : 101,
          "itemId" : 101,
          "itemName" : "아이템2"
        } ],
        "orderStatus" : "PLACED",
        "orderTime" : "2022-02-03 14:00:00"
      }, {
        "orderId" : 2,
        "userId" : 1,
        "userName" : "닉네임",
        "orderItemResponses" : [ {
          "orderItemId" : 102,
          "itemId" : 102,
          "itemName" : "아이템3"
        }, {
          "orderItemId" : 103,
          "itemId" : 103,
          "itemName" : "아이템2"
        } ],
        "orderStatus" : "CANCELED",
        "orderTime" : "2022-02-03 15:00:00"
      } ]
    }

#### Request parameters

Parameter | Description
--- | ---
`orderDate` | 주문 날짜 YYYY-MM-DD
`lastOrderId` | 페이지의 마지막 주문 고유 번호

#### Response fields

Path | Type | Description
--- | --- | ---
`code` | `String` | 결과 코드 SUCCESS/ERROR
`message` | `String` | 메시지
`data[*].orderId` | `Number` | 주문 고유 번호
`data[*].userId` | `Number` | 고객 고유 번호
`data[*].userName` | `String` | 고객 이름
`data[*].orderItemResponses[*].orderItemId` | `Number` | 장바구니 고유번호
`data[*].orderItemResponses[*].itemId` | `Number` | 상품 고유번호
`data[*].orderItemResponses[*].itemName` | `String` | 상품 이름
`data[*].orderStatus` | `String` | 주문 상태
`data[*].orderTime` | `String` | 주문 시간

### 점주 서비스 - 주문 페이지 (잘못된 파라미터 형식)

#### Curl request

    $ curl 'http://127.0.0.1:8001/orderMain?orderDate=20220203&lastOrderId=7' -i -X GET

#### HTTP request

    GET /orderMain?orderDate=20220203&lastOrderId=7 HTTP/1.1
    Host: 127.0.0.1:8001

#### HTTP response

    HTTP/1.1 400 Bad Request
    Content-Type: application/json
    Content-Length: 160

    {
      "code" : "ERROR",
      "message" : "[orderDate](은)는 YYYY-MM-DD 형식에 맞게 작성되지 않았습니다. 입력된 값: [20220203]",
      "data" : null
    }

#### Request parameters

Parameter | Description
--- | ---
`orderDate` | 주문 날짜 YYYY-MM-DD
`lastOrderId` | 페이지의 마지막 주문 고유 번호

#### Response fields

Path | Type | Description
--- | --- | ---
`code` | `String` | 결과 코드 SUCCESS/ERROR
`message` | `String` | 메시지
`data` | `Null` | 데이터