API 문서 개요

이 문서를 통해 주문 관리 플랫폼의 API 사용법을 알 수 있습니다.

회원

회원가입

http-request
POST /api/users/sign-up HTTP/1.1
Content-Type: application/json
Content-Length: 178
X-CSRF-TOKEN: hTVfTjYG-QLapYjsDWoekQGbNLrB3fe7BXstdhk1mDaKk0wgtFc9dgZlyWf3kL6Jb0cq92T6GduivM-WMkxLEyEN_ga78S4Z
Host: localhost:8080

{
  "id" : "testuser",
  "nickname" : "testname1",
  "password" : "Password1Q@w",
  "email" : "test@example.com",
  "phone" : "010-1234-5678",
  "tokenValue" : "RoleTokenValue"
}
Table 1. request-field
Path Type Description Required

id

String

회원 ID

true

nickname

String

닉네임

true

email

String

이메일

true

password

String

비밀번호

true

phone

String

전화번호

true

tokenValue

String

특정 권한(사장님, 관리자) 회원가입 토큰

false

http-response
HTTP/1.1 302 Found
Content-Language: en
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Location: /api/users/sign-in

로그아웃

http-request
POST /api/users/sign-out HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: AFKFQL7Pa6d8OWrF7luiJIZEuGZfrChQlCbyHIT-CHmgO-VwZTHhdIz8CcFRAFv1jHaWQLIllQQ5zRB9okXLJODJbh2SC9FD
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
Table 2. request-header
Name Description

Authorization

JWT 토큰

http-response
HTTP/1.1 302 Found
Content-Language: en
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Location: /api/users/sign-in

내 정보 조회

http-request
GET /api/users/me?page=0&size=10&sortBy=createdAt&isAsc=false HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: af1mWucuTlI0eteXBMAxDPvDAn1kO4xgP5LHsUzqG1TJN1R2XpgAatRKLWsZGLbzPe0FNMr2Lx9cXe1NWvGlhH-PL2P5AGcS
Host: localhost:8080
Table 3. request-header
Name Description

Authorization

JWT 토큰

Table 4. query-parameters
Parameter Description Required

page

페이지 번호

false

size

페이지 크기

false

sortBy

정렬 기준

false

isAsc

오름차순 여부

false

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 259

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : [ {
    "id" : "testuser",
    "nickname" : "testname1",
    "email" : "test@example.com",
    "phone" : "010-1234-5678",
    "isAdmin" : "MANAGER"
  } ]
}
Table 5. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.[].id

String

사용자의 고유 ID

data.[].nickname

String

사용자의 닉네임

data.[].email

String

사용자의 이메일 주소

data.[].phone

String

사용자의 전화번호

data.[].isAdmin

String

사용자의 권한 (예: CUSTOMER, ADMIN)

회원 정보 수정

http-request
PATCH /api/users/me HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 95
X-CSRF-TOKEN: PXRAq5bsTW8MSFhuipvclyCKoQHef41VhCODjEJAuKTk6IuoWxVxz_LZeVwhKzta7Lbo8xi5jGO_T7l4tUHiuiZ42ZfT2-mb
Host: localhost:8080

{
  "nickname" : "newname12",
  "email" : "newemail@example.com",
  "phone" : "010-8765-4321"
}
Table 6. request-header
Name Description

Authorization

JWT 토큰

Table 7. request-field
Path Type Description Required

nickname

String

변경할 닉네임

true

email

String

변경할 이메일

true

phone

String

변경할 전화번호

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 260

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "id" : "testuser",
    "nickname" : "newname12",
    "email" : "newemail@example.com",
    "phone" : "010-8765-4321",
    "isAdmin" : "CUSTOMER"
  }
}
Table 8. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

사용자의 고유 ID

data.nickname

String

사용자의 닉네임

data.email

String

사용자의 이메일 주소

data.phone

String

사용자의 전화번호

data.isAdmin

String

사용자의 권한 (예: CUSTOMER, ADMIN)

회원 탈퇴

http-request
DELETE /api/users/me HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: TtUGdv4UHjnHgcU6DQd4162fOpdjRGeNI2c1VjWn9dsdXeKxfLZnEstyLVzqtaYINSpMsZurF68FcVSgFVBQMgaXxrkpZdXS
Host: localhost:8080
Table 9. request-header
Name Description

Authorization

JWT 토큰

http-response
HTTP/1.1 302 Found
Content-Language: en
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Location: /api/users/sign-in

주문

주문 생성

http-request
POST /api/orders HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 238
X-CSRF-TOKEN: 46QSRfn3sU0SBm25JIGYXyTzCPoj_tNEodxh0sDhxa64dh3h0ZUjd5zFh3k_NVSMQKysZ0KXJZhAx-dpkO0F6_DXoJ3dTy7W
Host: localhost:8080

{
  "menuId" : "550e8400-e29b-41d4-a716-446655440001",
  "quantity" : 2,
  "orderRequest" : "양념 많이 주세요",
  "paymentType" : "CREDIT_CARD",
  "orderType" : "ONLINE",
  "userAddressId" : "550e8400-e29b-41d4-a716-446655440003"
}
Table 10. request-header
Name Description

Authorization

JWT 토큰

Table 11. request-field
Path Type Description Required

menuId

String

메뉴 ID

true

quantity

Number

주문 수량

true

orderRequest

String

주문 요청사항

false

paymentType

String

결제 방식(CREDIT_CARD)

true

orderType

String

주문 타입 (ONLINE, OFFLINE)

true

userAddressId

String

배송지 주소 ID

false

http-response
HTTP/1.1 201 Created
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1042

{
  "code" : 201,
  "status" : "Created",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "orderId" : "550e8400-e29b-41d4-a716-446655440000",
    "orderStatus" : "PENDING",
    "quantity" : 2,
    "orderRequest" : "양념 많이 주세요",
    "orderType" : "ONLINE",
    "addressInfo" : {
      "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
      "address" : "서울시 강남구 테헤란로 123",
      "detail" : "101동 1001호",
      "defaultAddress" : false
    },
    "orderedAt" : "2025-02-25T01:33:29.643965",
    "updatedAt" : "2025-02-25T01:33:29.643976",
    "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
    "restaurantName" : "맛있는 치킨",
    "menuName" : "후라이드 치킨",
    "menuPrice" : 18000,
    "totalPrice" : 36000,
    "paymentStatus" : "COMPLETED",
    "paymentType" : "CREDIT_CARD",
    "externalPaymentId" : "550e8400-e29b-41d4-a716-446655440004",
    "paidAt" : "2025-02-25T01:33:29.643979",
    "refundedAt" : null,
    "createdBy" : "testuser"
  }
}
Table 12. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.orderId

String

주문 ID

data.orderStatus

String

주문 상태

data.quantity

Number

주문 수량

data.orderRequest

String

주문 요청사항

data.orderType

String

주문 타입

data.addressInfo.userAddressId

String

주소 ID

data.addressInfo.address

String

주소

data.addressInfo.detail

String

상세 주소

data.addressInfo.defaultAddress

Boolean

기본 배송지 여부

data.orderedAt

String

주문 시간

data.updatedAt

String

주문 업데이트 시간

data.restaurantId

String

음식점 ID

data.restaurantName

String

음식점 이름

data.menuName

String

메뉴 이름

data.menuPrice

Number

메뉴 가격

data.totalPrice

Number

총 주문 금액

data.paymentStatus

String

결제 상태

data.paymentType

String

결제 방식

data.externalPaymentId

String

외부 결제 ID

data.paidAt

String

결제 시간

data.createdBy

String

주문 생성자

data.refundedAt

Null

환불 시간

주문 상세조회

http-request
GET /api/orders/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: VY_Ho1yr5Q1IqiN2txFhEGYoZDPo6QVp0DMR7C5p50UvkavQYLnxxmuc0jplnxYU0jxVKFROSQrci2BE4gso3RhdgXEa9821
Host: localhost:8080
Table 13. request-header
Name Description

Authorization

JWT 토큰

Table 14. /api/orders/{id}
Parameter Description

id

주문 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1036

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "orderId" : "550e8400-e29b-41d4-a716-446655440000",
    "orderStatus" : "PENDING",
    "quantity" : 2,
    "orderRequest" : "양념 많이 주세요",
    "orderType" : "ONLINE",
    "addressInfo" : {
      "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
      "address" : "서울시 강남구 테헤란로 123",
      "detail" : "101동 1001호",
      "defaultAddress" : false
    },
    "orderedAt" : "2025-02-25T01:33:29.697802",
    "updatedAt" : "2025-02-25T01:33:29.697807",
    "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
    "restaurantName" : "맛있는 치킨",
    "menuName" : "후라이드 치킨",
    "menuPrice" : 18000,
    "totalPrice" : 36000,
    "paymentStatus" : "COMPLETED",
    "paymentType" : "CREDIT_CARD",
    "externalPaymentId" : "550e8400-e29b-41d4-a716-446655440004",
    "paidAt" : "2025-02-25T01:33:29.69781",
    "refundedAt" : null,
    "createdBy" : "testuser"
  }
}
Table 15. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.orderId

String

주문 ID

data.orderStatus

String

주문 상태

data.quantity

Number

주문 수량

data.orderRequest

String

주문 요청사항

data.orderType

String

주문 타입

data.addressInfo.userAddressId

String

주소 ID

data.addressInfo.address

String

주소

data.addressInfo.detail

String

상세 주소

data.addressInfo.defaultAddress

Boolean

기본 배송지 여부

data.orderedAt

String

주문 시간

data.updatedAt

String

주문 업데이트 시간

data.restaurantId

String

음식점 ID

data.restaurantName

String

음식점 이름

data.menuName

String

메뉴 이름

data.menuPrice

Number

메뉴 가격

data.totalPrice

Number

총 주문 금액

data.paymentStatus

String

결제 상태

data.paymentType

String

결제 방식

data.externalPaymentId

String

외부 결제 ID

data.paidAt

String

결제 시간

data.createdBy

String

주문 생성자

data.refundedAt

Null

환불 시간

내 주문 내역 조회

http-request
GET /api/orders/my?keyword=%EC%B9%98%ED%82%A8&statuses=PAID&startDate=2025-02-14&endDate=2025-02-21&isAsc=false&page=0&size=10&foodTypes=%ED%95%9C%EC%8B%9D&foodTypes=%EC%A4%91%EC%8B%9D HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: vL2JyxXCDmvmn_vDy4TtDjbFOpd4xI47eExWekBWoTCP3DqV3o7r-SP1a1nL_c_xqanZb1L1F_UZ9uoWGio0TyMzmQDqv16l
Host: localhost:8080
Table 16. request-header
Name Description

Authorization

JWT 토큰

Table 17. query-parameters
Parameter Description Required

keyword

검색 키워드

false

statuses

주문 상태 필터 (쉼표로 구분)

false

startDate

시작 날짜 (yyyy-MM-dd)

false

endDate

종료 날짜 (yyyy-MM-dd)

false

isAsc

오름차순 정렬 여부 (기본값: false)

false

page

페이지 번호

false

size

페이지 크기

false

sortBy

정렬기준 (기본값: 생성일자)

false

foodTypes

카테고리 필터 (쉼표로 구분)

false

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1040

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "content" : [ {
      "orderId" : "550e8400-e29b-41d4-a716-446655440000",
      "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
      "restaurantName" : "맛있는 치킨",
      "foodType" : "한식",
      "menuName" : "후라이드 치킨",
      "orderStatus" : "PENDING",
      "orderType" : "ONLINE",
      "createdAt" : "2025-02-25T01:33:29.608064",
      "updatedAt" : "2025-02-25T01:33:29.60807"
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 10,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalPages" : 1,
    "totalElements" : 1,
    "size" : 10,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "first" : true,
    "numberOfElements" : 1,
    "empty" : false
  }
}
Table 18. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.content[]

Array

주문 목록

data.content[].orderId

String

주문 ID

data.content[].restaurantId

String

음식점 ID

data.content[].restaurantName

String

음식점 이름

data.content[].foodType

String

식당 카테고리

data.content[].menuName

String

메뉴 이름

data.content[].orderStatus

String

주문 상태

data.content[].orderType

String

주문 타입

data.content[].createdAt

String

주문 생성 시간

data.content[].updatedAt

String

주문 수정 시간

data.pageable

Object

페이지 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬이 비어있는지 여부

data.pageable.sort.sorted

Boolean

정렬 적용 여부

data.pageable.sort.unsorted

Boolean

정렬 미적용 여부

data.pageable.offset

Number

페이지 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징 미적용 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬이 비어있는지 여부

data.sort.sorted

Boolean

정렬 적용 여부

data.sort.unsorted

Boolean

정렬 미적용 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

현재 페이지 요소 수

data.empty

Boolean

페이지가 비어있는지 여부

식당의 주문 내역 조회

http-request
GET /api/orders/restaurant?keyword=%EC%B9%98%ED%82%A8&statuses=PAID&startDate=2025-02-14&endDate=2025-02-21&isAsc=false&page=0&size=10&restaurantId=550e8400-e29b-41d4-a716-446655440002 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: vkzYwR5e9LIShBcqopXWECa4Z_z1kXBM5XgvV898CIBCOoKP2i7tpyw4ldc_tidJwbjickCLSp2ToUlh1kBJMfpOOLkhXLC8
Host: localhost:8080
Table 19. request-header
Name Description

Authorization

JWT 토큰

Table 20. query-parameters
Parameter Description Required

keyword

검색 키워드

false

statuses

주문 상태 필터 (쉼표로 구분)

false

startDate

시작 날짜 (yyyy-MM-dd)

false

endDate

종료 날짜 (yyyy-MM-dd)

false

isAsc

오름차순 정렬 여부 (기본값: false)

false

page

페이지 번호

false

size

페이지 크기

false

sortBy

정렬기준 (기본값: 생성일자)

false

restaurantId

레스토랑 ID

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1041

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "content" : [ {
      "orderId" : "550e8400-e29b-41d4-a716-446655440000",
      "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
      "restaurantName" : "맛있는 치킨",
      "foodType" : "한식",
      "menuName" : "후라이드 치킨",
      "orderStatus" : "PENDING",
      "orderType" : "ONLINE",
      "createdAt" : "2025-02-25T01:33:29.675488",
      "updatedAt" : "2025-02-25T01:33:29.675492"
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 10,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalPages" : 1,
    "totalElements" : 1,
    "size" : 10,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "first" : true,
    "numberOfElements" : 1,
    "empty" : false
  }
}
Table 21. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.content[]

Array

주문 목록

data.content[].orderId

String

주문 ID

data.content[].restaurantId

String

음식점 ID

data.content[].restaurantName

String

음식점 이름

data.content[].foodType

String

식당 카테고리

data.content[].menuName

String

메뉴 이름

data.content[].orderStatus

String

주문 상태

data.content[].orderType

String

주문 타입

data.content[].createdAt

String

주문 생성 시간

data.content[].updatedAt

String

주문 수정 시간

data.pageable

Object

페이지 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬이 비어있는지 여부

data.pageable.sort.sorted

Boolean

정렬 적용 여부

data.pageable.sort.unsorted

Boolean

정렬 미적용 여부

data.pageable.offset

Number

페이지 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징 미적용 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬이 비어있는지 여부

data.sort.sorted

Boolean

정렬 적용 여부

data.sort.unsorted

Boolean

정렬 미적용 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

현재 페이지 요소 수

data.empty

Boolean

페이지가 비어있는지 여부

주문 취소

http-request
PATCH /api/orders/550e8400-e29b-41d4-a716-446655440000/cancel HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: IbtVl8uDGSLi0bVFM6YwAYx5dlBwATaNg6tXH5PNuydDyl3uFNpgoP62f0TP44UgUIsEObxMWzFDOFKgup9jfPD7jBNz-DuP
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
Table 22. request-header
Name Description

Authorization

JWT 토큰

Table 23. /api/orders/{id}/cancel
Parameter Description

id

주문 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1061

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "orderId" : "550e8400-e29b-41d4-a716-446655440000",
    "orderStatus" : "CANCELED",
    "quantity" : 2,
    "orderRequest" : "양념 많이 주세요",
    "orderType" : "ONLINE",
    "addressInfo" : {
      "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
      "address" : "서울시 강남구 테헤란로 123",
      "detail" : "101동 1001호",
      "defaultAddress" : false
    },
    "orderedAt" : "2025-02-25T01:33:29.561409",
    "updatedAt" : "2025-02-25T01:33:29.561415",
    "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
    "restaurantName" : "맛있는 치킨",
    "menuName" : "후라이드 치킨",
    "menuPrice" : 18000,
    "totalPrice" : 36000,
    "paymentStatus" : "REFUNDED",
    "paymentType" : "CREDIT_CARD",
    "externalPaymentId" : "550e8400-e29b-41d4-a716-446655440004",
    "paidAt" : "2025-02-25T01:33:29.561431",
    "refundedAt" : "2025-02-25T01:33:29.561449",
    "createdBy" : "testuser"
  }
}
Table 24. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.orderId

String

주문 ID

data.orderStatus

String

주문 상태

data.quantity

Number

주문 수량

data.orderRequest

String

주문 요청사항

data.orderType

String

주문 타입

data.addressInfo.userAddressId

String

주소 ID

data.addressInfo.address

String

주소

data.addressInfo.detail

String

상세 주소

data.addressInfo.defaultAddress

Boolean

기본 배송지 여부

data.orderedAt

String

주문 시간

data.updatedAt

String

주문 업데이트 시간

data.restaurantId

String

음식점 ID

data.restaurantName

String

음식점 이름

data.menuName

String

메뉴 이름

data.menuPrice

Number

메뉴 가격

data.totalPrice

Number

총 주문 금액

data.paymentStatus

String

결제 상태

data.paymentType

String

결제 방식

data.externalPaymentId

String

외부 결제 ID

data.paidAt

String

결제 시간

data.createdBy

String

주문 생성자

data.orderStatus

String

주문 상태(CANCELLED)

data.paymentStatus

String

결제 상태(REFUNDED)

data.refundedAt

String

환불 시간

주문 삭제

http-request
DELETE /api/orders/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: FixkqfmXmvCQpZNyU-SNfqnqzhAP2r-fi91cVZqLwjMgm9SpcE0Az8qgosC9k_VBa8m5SM2L4yk77tyyuu5tbK-5-goTquaZ
Host: localhost:8080
Table 25. request-header
Name Description

Authorization

JWT 토큰

Table 26. /api/orders/{id}
Parameter Description

id

주문 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 110

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : null
}
Table 27. response-field
Path Type Description

code

Number

응답 코드

message

String

응답 메시지

status

String

응답 상태

data

Null

데이터 없음

리뷰

리뷰 생성

http-request
POST /api/reviews HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 187
X-CSRF-TOKEN: m5SV_UJaloUuE_rJqQ1ANp2pJUifSrnA-FEnd8FrILFoKINn_fGjyCM8ouQDd575yyB0AKWaCCmseIjtmjNET_hbEoMJTecB
Host: localhost:8080

{
  "orderId" : "550e8400-e29b-41d4-a716-446655440000",
  "title" : "정말 맛있어요!",
  "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
  "rating" : 5
}
Table 28. request-header
Name Description

Authorization

JWT 토큰

request-body
{
  "orderId" : "550e8400-e29b-41d4-a716-446655440000",
  "title" : "정말 맛있어요!",
  "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
  "rating" : 5
}
http-response
HTTP/1.1 201 Created
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 662

{
  "code" : 201,
  "status" : "Created",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "reviewId" : "550e8400-e29b-41d4-a716-446655440003",
    "orderId" : "550e8400-e29b-41d4-a716-446655440000",
    "menuId" : "550e8400-e29b-41d4-a716-446655440001",
    "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
    "title" : "정말 맛있어요!",
    "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
    "rating" : 5,
    "menuName" : "후라이드 치킨",
    "restaurantName" : "후라이드가 맛있는 치킨 집",
    "createdBy" : "testuser",
    "createdAt" : "2025-02-25T01:33:35.827666"
  }
}
Table 29. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.reviewId

String

리뷰 ID

data.orderId

String

주문 ID

data.menuId

String

메뉴 ID

data.restaurantId

String

가게 ID

data.title

String

리뷰 제목

data.content

String

리뷰 내용

data.rating

Number

별점

data.menuName

String

메뉴 이름

data.restaurantName

String

가게 이름

data.createdBy

String

리뷰 생성 시간

data.createdAt

String

리뷰 생성자

리뷰 전체 조회

http-request
GET /api/reviews?keyword=%EC%B9%98%ED%82%A8&startDate=2025-02-14&endDate=2025-02-21&isAsc=false&page=0&size=10 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: iEH9tr_4dRhlS8wb-kBBiJq2G5jWRFoinaDvp-GhFK-EC_mJvSWej4rBF3tIfK56zm11sP-HNqC1dWoPpMbektGYJcyyOsHs
Host: localhost:8080
Table 30. request-header
Name Description

Authorization

JWT 토큰

Table 31. query-parameters
Parameter Description Required

keyword

검색 키워드

false

startDate

시작 날짜 (yyyy-MM-dd)

false

endDate

종료 날짜 (yyyy-MM-dd)

false

isAsc

오름차순 정렬 여부 (기본값: false)

false

page

페이지 번호

false

size

페이지 크기

false

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1210

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "content" : [ {
      "reviewId" : "550e8400-e29b-41d4-a716-446655440000",
      "orderId" : "550e8400-e29b-41d4-a716-446655440000",
      "menuId" : "550e8400-e29b-41d4-a716-446655440001",
      "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
      "title" : "정말 맛있어요!",
      "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
      "rating" : 5,
      "menuName" : "후라이드 치킨",
      "restaurantName" : "후라이드가 맛있는 치킨 집",
      "createdBy" : "testuser",
      "createdAt" : "2025-02-25T01:33:35.763095"
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 10,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalPages" : 1,
    "totalElements" : 1,
    "size" : 10,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "first" : true,
    "numberOfElements" : 1,
    "empty" : false
  }
}
Table 32. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.content[]

Array

리뷰 목록

data.content[].reviewId

String

리뷰 ID

data.content[].orderId

String

주문 ID

data.content[].menuId

String

메뉴 ID

data.content[].restaurantId

String

음식점 ID

data.content[].title

String

리뷰 제목

data.content[].content

String

리뷰 내용

data.content[].rating

Number

별점

data.content[].menuName

String

메뉴 이름

data.content[].restaurantName

String

음식점 이름

data.content[].createdBy

String

리뷰 작성자

data.content[].createdAt

String

리뷰 작성 시간

data.pageable

Object

페이지 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬이 비어있는지 여부

data.pageable.sort.sorted

Boolean

정렬 적용 여부

data.pageable.sort.unsorted

Boolean

정렬 미적용 여부

data.pageable.offset

Number

페이지 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징 미적용 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬이 비어있는지 여부

data.sort.sorted

Boolean

정렬 적용 여부

data.sort.unsorted

Boolean

정렬 미적용 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

현재 페이지 요소 수

data.empty

Boolean

페이지가 비어있는지 여부

리뷰 단건 조회

http-request
GET /api/reviews/550e8400-e29b-41d4-a716-446655440003 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: JeJaK05l4aLua2i8PhX8h904uwSvW-jOZQ_6JYMtQz09TAWoQNBtG38AhZvDWFyFXzjI4u5alj2fPYnjAWvDQ7VMdlwOfjzM
Host: localhost:8080
Table 33. request-header
Name Description

Authorization

JWT 토큰

Table 34. /api/reviews/{id}
Parameter Description

id

리뷰 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 657

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "reviewId" : "550e8400-e29b-41d4-a716-446655440003",
    "orderId" : "550e8400-e29b-41d4-a716-446655440000",
    "menuId" : "550e8400-e29b-41d4-a716-446655440001",
    "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
    "title" : "정말 맛있어요!",
    "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
    "rating" : 5,
    "menuName" : "후라이드 치킨",
    "restaurantName" : "후라이드가 맛있는 치킨 집",
    "createdBy" : "testuser",
    "createdAt" : "2025-02-25T01:33:35.818473"
  }
}
Table 35. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.reviewId

String

리뷰 ID

data.orderId

String

주문 ID

data.menuId

String

메뉴 ID

data.restaurantId

String

가게 ID

data.title

String

리뷰 제목

data.content

String

리뷰 내용

data.rating

Number

별점

data.menuName

String

메뉴 이름

data.restaurantName

String

가게 이름

data.createdBy

String

리뷰 생성 시간

data.createdAt

String

리뷰 생성자

가게에 달린 리뷰 조회

http-request
GET /api/reviews/restaurant?keyword=%EC%B9%98%ED%82%A8&startDate=2025-02-14&endDate=2025-02-21&isAsc=false&page=0&size=10&restaurantId=550e8400-e29b-41d4-a716-446655440002 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: ticLcpOA55cx7SAhh6gj377qlJTsJkNC5-ritURN25QIIRkrgxIyE6e01fIcjBVAsYUX7Yzaua3fRyJvg4mB13YrufBsEyAa
Host: localhost:8080
Table 36. request-header
Name Description

Authorization

JWT 토큰

Table 37. query-parameters
Parameter Description Required

keyword

검색 키워드

false

startDate

시작 날짜 (yyyy-MM-dd)

false

endDate

종료 날짜 (yyyy-MM-dd)

false

isAsc

오름차순 정렬 여부 (기본값: false)

false

page

페이지 번호

false

size

페이지 크기

false

restaurantId

레스토랑 ID

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1209

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "content" : [ {
      "reviewId" : "550e8400-e29b-41d4-a716-446655440000",
      "orderId" : "550e8400-e29b-41d4-a716-446655440000",
      "menuId" : "550e8400-e29b-41d4-a716-446655440001",
      "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
      "title" : "정말 맛있어요!",
      "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
      "rating" : 5,
      "menuName" : "후라이드 치킨",
      "restaurantName" : "후라이드가 맛있는 치킨 집",
      "createdBy" : "testuser",
      "createdAt" : "2025-02-25T01:33:35.80526"
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 10,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalPages" : 1,
    "totalElements" : 1,
    "size" : 10,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "first" : true,
    "numberOfElements" : 1,
    "empty" : false
  }
}
Table 38. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.content[]

Array

리뷰 목록

data.content[].reviewId

String

리뷰 ID

data.content[].orderId

String

주문 ID

data.content[].menuId

String

메뉴 ID

data.content[].restaurantId

String

음식점 ID

data.content[].title

String

리뷰 제목

data.content[].content

String

리뷰 내용

data.content[].rating

Number

별점

data.content[].menuName

String

메뉴 이름

data.content[].restaurantName

String

음식점 이름

data.content[].createdBy

String

리뷰 작성자

data.content[].createdAt

String

리뷰 작성 시간

data.pageable

Object

페이지 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬이 비어있는지 여부

data.pageable.sort.sorted

Boolean

정렬 적용 여부

data.pageable.sort.unsorted

Boolean

정렬 미적용 여부

data.pageable.offset

Number

페이지 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징 미적용 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬이 비어있는지 여부

data.sort.sorted

Boolean

정렬 적용 여부

data.sort.unsorted

Boolean

정렬 미적용 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

현재 페이지 요소 수

data.empty

Boolean

페이지가 비어있는지 여부

리뷰 수정

http-request
PUT /api/reviews/550e8400-e29b-41d4-a716-446655440003 HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 131
X-CSRF-TOKEN: nw7CSAJBsh99OE_POux6xlTmn8QZ9utBkMw4w8NMmfwcLGMo_G3wLTAi0HtQCCupC8FO822EsqUqldNs9agA8qYvr80tH1JK
Host: localhost:8080

{
  "title" : "이 집 별로입니다!",
  "content" : "먹다가 머리카락나와서 리뷰 수정합니다!",
  "rating" : 1
}
Table 39. request-header
Name Description

Authorization

JWT 토큰

Table 40. /api/reviews/{id}
Parameter Description

id

리뷰 ID

request-body
{
  "title" : "이 집 별로입니다!",
  "content" : "먹다가 머리카락나와서 리뷰 수정합니다!",
  "rating" : 1
}
http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 657

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "reviewId" : "550e8400-e29b-41d4-a716-446655440003",
    "orderId" : "550e8400-e29b-41d4-a716-446655440000",
    "menuId" : "550e8400-e29b-41d4-a716-446655440001",
    "restaurantId" : "550e8400-e29b-41d4-a716-446655440002",
    "title" : "정말 맛있어요!",
    "content" : "배달도 빠르고, 양도많아요! 또 시켜먹을게요~",
    "rating" : 5,
    "menuName" : "후라이드 치킨",
    "restaurantName" : "후라이드가 맛있는 치킨 집",
    "createdBy" : "testuser",
    "createdAt" : "2025-02-25T01:33:35.781097"
  }
}
Table 41. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.reviewId

String

리뷰 ID

data.orderId

String

주문 ID

data.menuId

String

메뉴 ID

data.restaurantId

String

가게 ID

data.title

String

리뷰 제목

data.content

String

리뷰 내용

data.rating

Number

별점

data.menuName

String

메뉴 이름

data.restaurantName

String

가게 이름

data.createdBy

String

리뷰 생성 시간

data.createdAt

String

리뷰 생성자

리뷰 삭제

http-request
DELETE /api/reviews/550e8400-e29b-41d4-a716-446655440003 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: 0OyE8mCeR6pRUelIoX6M2k-WOrj7So6Vd86elgMAvikev82t4NXixQT9JMh8YdhwmVO463f0F9nIK724FPqroWA320t82v_O
Host: localhost:8080
Table 42. request-header
Name Description

Authorization

JWT 토큰

Table 43. /api/reviews/{id}
Parameter Description

id

리뷰 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 110

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : null
}
Table 44. response-field
Path Type Description

code

Number

응답 코드

message

String

응답 메시지

status

String

응답 상태

data

Null

데이터 없음

배송

유저 배송지 생성

http-request
POST /api/user/address HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 89
X-CSRF-TOKEN: dPbRkfI5fdLh82S2m2DDo5XBRdJ3XJH-SY0_IctH9DByRjiCFZS0psNaS-DMw1aDr033wKL4aLARP6HTL7RcEa1ylVZHI1qx
Host: localhost:8080

{
  "address" : "대구 서구 북비산로 생성34",
  "detail" : "522-13번지 3층"
}
Table 45. request-header
Name Description

Authorization

JWT 토큰

Table 46. request-field
Path Type Description Required

address

String

주소지

true

detail

String

상세 주소

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 293

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
    "address" : "대구 서구 북비산로 생성34",
    "detail" : "522-13번지 3층",
    "defaultAddress" : false
  }
}
Table 47. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.userAddressId

String

주소지 ID

data.address

String

주소지

data.detail

String

상세주소

data.defaultAddress

Boolean

대표주소지설정

유저 배송지 조회

http-request
GET /api/user/address HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: XhiS01eSmmaZdMzhtTlD8rSOgIjo3NxGsbyULoK5FdKvwoYrPSyn5Gbz-FW0Ea2E0BR3ltborbDd6exr1NnwHbOAILac--Uf
Host: localhost:8080
Table 48. request-header
Name Description

Authorization

JWT 토큰

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 830

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "content" : [ {
      "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
      "address" : "서울시 강남구 테헤란로 123",
      "detail" : "101동 1001호",
      "defaultAddress" : false
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 10,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalPages" : 1,
    "totalElements" : 1,
    "size" : 10,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "first" : true,
    "numberOfElements" : 1,
    "empty" : false
  }
}
Table 49. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.content[].userAddressId

String

주소지 ID

data.content[].address

String

주소지

data.content[].detail

String

상세주소

data.content[].defaultAddress

Boolean

대표주소지설정

data.pageable

Object

페이지 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬이 비어있는지 여부

data.pageable.sort.sorted

Boolean

정렬 적용 여부

data.pageable.sort.unsorted

Boolean

정렬 미적용 여부

data.pageable.offset

Number

페이지 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징 미적용 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬이 비어있는지 여부

data.sort.sorted

Boolean

정렬 적용 여부

data.sort.unsorted

Boolean

정렬 미적용 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

현재 페이지 요소 수

data.empty

Boolean

페이지가 비어있는지 여부

유저 배송지 수정

http-request
PUT /api/user/address/550e8400-e29b-41d4-a716-446655440003 HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 89
X-CSRF-TOKEN: Quq2zPSpRH3fGfOF_nQiqp_eoCpeyZHk29nKiFoe7ZNR1UDIIN2BqsOefEnyK8C8zFkWnaa_jUhpr_TJ6L-o7m4siaBh5CGu
Host: localhost:8080

{
  "address" : "대구 서구 북비산로 생성34",
  "detail" : "522-13번지 3층"
}
Table 50. request-header
Name Description

Authorization

JWT 토큰

Table 51. /api/user/address/{id}
Parameter Description

id

배송지 주소 ID

Table 52. request-field
Path Type Description Required

address

String

주소지

true

detail

String

상세 주소

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 293

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
    "address" : "대구 서구 북비산로 생성34",
    "detail" : "522-13번지 3층",
    "defaultAddress" : false
  }
}
Table 53. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.userAddressId

String

주소지 ID

data.address

String

주소지

data.detail

String

상세주소

data.defaultAddress

Boolean

대표주소지설정

유저 배송지 삭제

http-request
PUT /api/user/address/550e8400-e29b-41d4-a716-446655440003/default HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: bDkptLzZeY7e17KqtcWE0NUfJwIGebEvMN1oo4PKTICS4x0RVQEb1d_sTOrz4IrJgOiw4e17Cjo1QIICAOhcmuCpdbej0Hsi
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
Table 54. request-header
Name Description

Authorization

JWT 토큰

Table 55. /api/user/address/{id}/default
Parameter Description

id

배송지 주소 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 293

{
  "code" : 200,
  "status" : "OK",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "userAddressId" : "550e8400-e29b-41d4-a716-446655440003",
    "address" : "대구 서구 북비산로 생성34",
    "detail" : "522-13번지 3층",
    "defaultAddress" : false
  }
}
Table 56. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.userAddressId

String

주소지 ID

data.address

String

주소지

data.detail

String

상세주소

data.defaultAddress

Boolean

대표주소지설정

카테고리

카테고리 생성

http-request
POST /api/categories HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGFkMTIzIiwiQXV0aG9yaXphdGlvbiI6Ik1BU1RFUiIsImV4cCI6MTc0MDQxNTcxMiwiaWF0IjoxNzQwNDE0ODEyfQ.7IpLC-gspoNm1zM3k5RThZ1qPBn43m2fITgOQ8r1o4c
Content-Length: 27
X-CSRF-TOKEN: 3T0quBZ_locHJjRaMUarcrrm3_zSNjdcchhyLnOwMir84KxGuwgfiyUc8uUqFAdoCGufS9_e8sW3BlZxFytDSEWGUxydhp8i
Host: localhost:8080

{
  "foodType" : "간식"
}
Table 57. request-header
Name Description

Authorization

JWT 토큰

Table 58. request-field
Path Type Description Required

foodType

String

음식 카테고리 이름

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 413

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "createdAt" : "2025-02-25T01:33:33.049572",
    "createdBy" : "adad123",
    "updatedAt" : "2025-02-25T01:33:33.049572",
    "updatedBy" : null,
    "deletedAt" : null,
    "deletedBy" : null,
    "id" : "bdae91e2-a8b9-409d-9dac-a58f02c79518",
    "foodType" : "간식",
    "deleted" : false
  }
}
Table 59. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

음식 카테고리 ID

data.foodType

String

음식 카테고리 이름

data.deleted

Boolean

음식 카테고리 삭제 여부

data.createdAt

String

음식 카테고리 생성시간

data.createdBy

String

음식 카테고리 생성자

data.updatedAt

String

음식 카테고리 수정시간

data.updatedBy

Null

음식 카테고리 수정자

data.deletedAt

Null

음식 카테고리 삭제시간

data.deletedBy

Null

음식 카테고리 삭제자

카테고리 수정

http-request
PUT /api/categories/660e8400-e29b-41d4-a716-446655440003 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGFkMTIzIiwiQXV0aG9yaXphdGlvbiI6Ik1BU1RFUiIsImV4cCI6MTc0MDQxNTcxMiwiaWF0IjoxNzQwNDE0ODEyfQ.7IpLC-gspoNm1zM3k5RThZ1qPBn43m2fITgOQ8r1o4c
Content-Length: 27
X-CSRF-TOKEN: lCwIz_ZhfgE8xnoN2Nyzwc87YTjCP-mJvzdA68Oo_ADIc7UMpkls-pBVTTIR90M47fGH860LTFn7C9-khwck2veenTDwEtQ6
Host: localhost:8080

{
  "foodType" : "후식"
}
Table 60. request-header
Name Description

Authorization

JWT 토큰

Table 61. /api/categories/{id}
Parameter Description

id

음식 카테고리 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 389

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "createdAt" : null,
    "createdBy" : null,
    "updatedAt" : "2025-02-25T01:33:32.995965",
    "updatedBy" : "adad123",
    "deletedAt" : null,
    "deletedBy" : null,
    "id" : "660e8400-e29b-41d4-a716-446655440003",
    "foodType" : "후식",
    "deleted" : false
  }
}
Table 62. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

음식 카테고리 ID

data.foodType

String

음식 카테고리 이름

data.deleted

Boolean

음식 카테고리 삭제 여부

data.createdAt

Null

음식 카테고리 생성시간

data.createdBy

Null

음식 카테고리 생성자

data.updatedAt

String

음식 카테고리 수정시간

data.updatedBy

String

음식 카테고리 수정자

data.deletedAt

Null

음식 카테고리 삭제시간

data.deletedBy

Null

음식 카테고리 삭제자

카테고리 삭제

http-request
DELETE /api/categories/660e8400-e29b-41d4-a716-446655440003 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGFkMTIzIiwiQXV0aG9yaXphdGlvbiI6Ik1BU1RFUiIsImV4cCI6MTc0MDQxNTcxMiwiaWF0IjoxNzQwNDE0ODEyfQ.7IpLC-gspoNm1zM3k5RThZ1qPBn43m2fITgOQ8r1o4c
X-CSRF-TOKEN: ItvX2_hopHxn15l4MvT7J6b9sagoaMGNvRtyhVecFjBWvu_ARr21v55bkE1K4PhACtnPEsTPnMkeWaWgiy9H5DL9Lwky2I2h
Host: localhost:8080
Table 63. request-header
Name Description

Authorization

JWT 토큰

Table 64. /api/categories/{id}
Parameter Description

id

음식 카테고리 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 388

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "createdAt" : null,
    "createdBy" : null,
    "updatedAt" : null,
    "updatedBy" : null,
    "deletedAt" : "2025-02-25T01:33:33.108954",
    "deletedBy" : "adad123",
    "id" : "660e8400-e29b-41d4-a716-446655440003",
    "foodType" : "카페",
    "deleted" : true
  }
}
Table 65. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

음식 카테고리 ID

data.foodType

String

음식 카테고리 이름

data.deleted

Boolean

음식 카테고리 삭제 여부

data.createdAt

Null

음식 카테고리 생성시간

data.createdBy

Null

음식 카테고리 생성자

data.updatedAt

Null

음식 카테고리 수정시간

data.updatedBy

Null

음식 카테고리 수정자

data.deletedAt

String

음식 카테고리 삭제시간

data.deletedBy

String

음식 카테고리 삭제자

식당

식당 정보 생성

http-request
POST /api/restaurants HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGFkMTIzIiwiQXV0aG9yaXphdGlvbiI6Ik1BU1RFUiIsImV4cCI6MTc0MDQxNTcxNSwiaWF0IjoxNzQwNDE0ODE1fQ.XfGvmsqryCH_dgT4dByQD8LZnLRYiUTyg6NgENbC5Kc
Content-Length: 213
Host: localhost:8080

{
  "name" : "돈가스 와와",
  "ownerId" : "user2",
  "category" : "880e8400-e29b-41d4-a716-446655440005",
  "legalCode" : "11110",
  "content" : "맛있는 돈가스집!",
  "operatingHours" : "10:00~17:00"
}
Table 66. request-header
Name Description

Authorization

JWT 토큰

Table 67. request-field
Path Type Description Required

name

String

음식점 이름

true

ownerId

String

음식점 사장 ID

true

category

String

음식점 음식유형

true

legalCode

String

음식점 지역코드

true

content

String

음식점 소개내용

true

operatingHours

String

음식점 영업시간

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 838

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "createdAt" : "2025-02-25T01:33:35.01878",
    "createdBy" : "adad123",
    "updatedAt" : "2025-02-25T01:33:35.01878",
    "updatedBy" : null,
    "deletedAt" : null,
    "deletedBy" : null,
    "id" : "ba15eed2-6346-4165-9a76-e20b5d5ba627",
    "name" : "돈가스 와와",
    "ownerId" : "user2",
    "content" : "맛있는 돈가스집!",
    "operatingHours" : "10:00~17:00",
    "category" : {
      "createdAt" : null,
      "createdBy" : null,
      "updatedAt" : null,
      "updatedBy" : null,
      "deletedAt" : null,
      "deletedBy" : null,
      "id" : "880e8400-e29b-41d4-a716-446655440005",
      "foodType" : "양식",
      "deleted" : false
    },
    "legalCode" : "11110",
    "deleted" : false
  }
}
Table 68. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

음식점 ID

data.name

String

음식점 이름

data.ownerId

String

음식점 사장 ID

data.category

Object

음식점 카테고리

data.category.id

String

카테고리 ID

data.category.foodType

String

음식 카테고리 이름

data.legalCode

String

음식점 지역코드

data.content

String

음식점 소개내용

data.operatingHours

String

음식점 영업시간

data.deleted

Boolean

음식점 삭제 여부

data.createdAt

String

음식점 생성시간

data.createdBy

String

음식점 생성자

data.updatedAt

String

음식점 수정시간

data.updatedBy

Null

음식점 수정자

data.deletedAt

Null

음식점 삭제시간

data.deletedBy

Null

음식점 삭제자

data.deleted

Boolean

음식점 삭제 여부

data.category.createdAt

Null

음식점 생성시간

data.category.createdBy

Null

음식점 생성자

data.category.updatedAt

Null

음식점 수정시간

data.category.updatedBy

Null

음식점 수정자

data.category.deletedAt

Null

음식점 삭제시간

data.category.deletedBy

Null

음식점 삭제자

data.category.deleted

Boolean

음식점 삭제 여부

식당 정보 수정

http-request
PUT /api/restaurants/492f5c05-6b9d-4593-9dc7-e500ec99da17 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGFkMTIzIiwiQXV0aG9yaXphdGlvbiI6Ik1BU1RFUiIsImV4cCI6MTc0MDQxNTcxNSwiaWF0IjoxNzQwNDE0ODE1fQ.XfGvmsqryCH_dgT4dByQD8LZnLRYiUTyg6NgENbC5Kc
Content-Length: 140
Host: localhost:8080

{
  "name" : "햄햄버거",
  "content" : "햄버거집!",
  "category" : "880e8400-e29b-41d4-a716-446655440005",
  "legalCode" : "11110"
}
Table 69. request-header
Name Description

Authorization

JWT 토큰

Table 70. /api/restaurants/{id}
Parameter Description

id

음식 카테고리 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 831

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "createdAt" : "2025-02-25T01:33:35.173533",
    "createdBy" : "adad123",
    "updatedAt" : "2025-02-25T01:33:35.192855",
    "updatedBy" : "adad123",
    "deletedAt" : null,
    "deletedBy" : null,
    "id" : "492f5c05-6b9d-4593-9dc7-e500ec99da17",
    "name" : "햄햄버거",
    "ownerId" : "user2",
    "content" : "햄버거집!",
    "operatingHours" : "10:00~17:00",
    "category" : {
      "createdAt" : null,
      "createdBy" : null,
      "updatedAt" : null,
      "updatedBy" : null,
      "deletedAt" : null,
      "deletedBy" : null,
      "id" : "880e8400-e29b-41d4-a716-446655440005",
      "foodType" : "양식",
      "deleted" : false
    },
    "legalCode" : "11110",
    "deleted" : false
  }
}
Table 71. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

음식점 ID

data.name

String

음식점 이름

data.ownerId

String

음식점 사장 ID

data.category

Object

음식점 카테고리

data.category.id

String

카테고리 ID

data.category.foodType

String

음식 카테고리 이름

data.legalCode

String

음식점 지역코드

data.content

String

음식점 소개내용

data.operatingHours

String

음식점 영업시간

data.deleted

Boolean

음식점 삭제 여부

data.createdAt

String

음식점 생성시간

data.createdBy

String

음식점 생성자

data.updatedAt

String

음식점 수정시간

data.updatedBy

String

음식점 수정자

data.deletedAt

Null

음식점 삭제시간

data.deletedBy

Null

음식점 삭제자

data.deleted

Boolean

음식점 삭제 여부

data.category.createdAt

Null

음식점 생성시간

data.category.createdBy

Null

음식점 생성자

data.category.updatedAt

Null

음식점 수정시간

data.category.updatedBy

Null

음식점 수정자

data.category.deletedAt

Null

음식점 삭제시간

data.category.deletedBy

Null

음식점 삭제자

data.category.deleted

Boolean

음식점 삭제 여부

식당 정보 삭제

http-request
DELETE /api/restaurants/eb556bc7-2a77-444e-83e3-71ff91761f2c HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGFkMTIzIiwiQXV0aG9yaXphdGlvbiI6Ik1BU1RFUiIsImV4cCI6MTc0MDQxNTcxNSwiaWF0IjoxNzQwNDE0ODE1fQ.XfGvmsqryCH_dgT4dByQD8LZnLRYiUTyg6NgENbC5Kc
Host: localhost:8080
Table 72. request-header
Name Description

Authorization

JWT 토큰

Table 73. /api/restaurants/{id}
Parameter Description

id

음식점 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 849

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "createdAt" : "2025-02-25T01:33:35.119385",
    "createdBy" : "adad123",
    "updatedAt" : "2025-02-25T01:33:35.135185",
    "updatedBy" : null,
    "deletedAt" : "2025-02-25T01:33:35.134703",
    "deletedBy" : "adad123",
    "id" : "eb556bc7-2a77-444e-83e3-71ff91761f2c",
    "name" : "가게1",
    "ownerId" : "user2",
    "content" : "맛있는집!",
    "operatingHours" : "10:00~17:00",
    "category" : {
      "createdAt" : null,
      "createdBy" : null,
      "updatedAt" : null,
      "updatedBy" : null,
      "deletedAt" : null,
      "deletedBy" : null,
      "id" : "880e8400-e29b-41d4-a716-446655440005",
      "foodType" : "양식",
      "deleted" : false
    },
    "legalCode" : "11110",
    "deleted" : true
  }
}
Table 74. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

음식점 ID

data.name

String

음식점 이름

data.ownerId

String

음식점 사장 ID

data.category

Object

음식점 카테고리

data.category.id

String

카테고리 ID

data.category.foodType

String

음식 카테고리 이름

data.legalCode

String

음식점 지역코드

data.content

String

음식점 소개내용

data.operatingHours

String

음식점 영업시간

data.deleted

Boolean

음식점 삭제 여부

data.createdAt

String

음식점 생성시간

data.createdBy

String

음식점 생성자

data.updatedAt

String

음식점 수정시간

data.updatedBy

Null

음식점 수정자

data.deletedAt

String

음식점 삭제시간

data.deletedBy

String

음식점 삭제자

data.deleted

Boolean

음식점 삭제 여부

data.category.createdAt

Null

음식점 생성시간

data.category.createdBy

Null

음식점 생성자

data.category.updatedAt

Null

음식점 수정시간

data.category.updatedBy

Null

음식점 수정자

data.category.deletedAt

Null

음식점 삭제시간

data.category.deletedBy

Null

음식점 삭제자

data.category.deleted

Boolean

음식점 삭제 여부

메뉴

메뉴 생성

http-request
POST /api/menus/add HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 172
X-CSRF-TOKEN: qd6XDRSO3O1JJ43-Y3W7sQYOMkdXAWuhIsWLBj3ACU5yZqa2n7ulNCft74hkFL7OUViPiWA4HyViYAmMFaSzMFz5a3kRBMLS
Host: localhost:8080

{
  "name" : "맛있는 메뉴",
  "price" : 15000,
  "description" : "매콤달콤한 맛이 일품인 메뉴",
  "restaurantId" : "550e8400-e29b-41d4-a716-446655440001"
}
Table 75. request-header
Name Description

Authorization

JWT 토큰

Table 76. request-field
Path Type Description Required

name

String

메뉴 이름

true

price

Number

메뉴 가격

true

description

String

메뉴 설명

true

restaurantId

String

레스토랑 ID

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 306

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "id" : "550e8400-e29b-41d4-a716-446655440000",
    "name" : "맛있는 메뉴",
    "price" : 15000,
    "description" : "매콤달콤한 맛이 일품인 메뉴",
    "deleted" : false
  }
}
Table 77. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

메뉴 ID

data.name

String

메뉴 이름

data.price

Number

메뉴 가격

data.description

String

메뉴 설명

data.deleted

Boolean

삭제 여부

메뉴 단건 조회

http-request
GET /api/menus/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: eFTf3TzMDtmlvBwZuVmCbqGOZMOcDi9AVoVWJO_BXrVndFLaSTXq7V-tPLuI2n4r2HS2XJPvSaGsb0ptb-MzF93xbo0ER2Xi
Host: localhost:8080
Table 78. request-header
Name Description

Authorization

JWT 토큰

Table 79. /api/menus/{menuId}
Parameter Description

menuId

메뉴 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 306

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "id" : "550e8400-e29b-41d4-a716-446655440000",
    "name" : "맛있는 메뉴",
    "price" : 15000,
    "description" : "매콤달콤한 맛이 일품인 메뉴",
    "deleted" : false
  }
}
Table 80. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

메뉴 ID

data.name

String

메뉴 이름

data.price

Number

메뉴 가격

data.description

String

메뉴 설명

data.deleted

Boolean

삭제 여부

메뉴 목록 조회

http-request
GET /api/menus?page=0&size=10&sortBy=name&isAsc=true HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: GriiIcjE2N1olqNR_tn91DzRWLtxAI3KQaFvFw_gAaIjjIR1fIqXFvCn4ORFr8VnnPTJsArldYNFN7XnJJVbc27XOJYTubBG
Host: localhost:8080
Table 81. request-header
Name Description

Authorization

JWT 토큰

Table 82. query-parameters
Parameter Description Required

page

페이지 번호 (기본값: 0)

false

size

페이지 크기 (기본값: 10)

false

sortBy

정렬 기준 (기본값: name)

false

isAsc

오름차순 정렬 여부 (기본값: true)

false

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 498

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : [ {
    "id" : "550e8400-e29b-41d4-a716-446655440000",
    "name" : "맛있는 메뉴",
    "price" : 15000,
    "description" : "매콤달콤한 맛이 일품인 메뉴",
    "deleted" : false
  }, {
    "id" : "2ce4aad1-7650-46d8-8c66-604575ffeb16",
    "name" : "다른 메뉴",
    "price" : 12000,
    "description" : "달콤한 맛이 일품인 메뉴",
    "deleted" : false
  } ]
}
Table 83. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data

Array

메뉴 목록

data[].id

String

메뉴 ID

data[].name

String

메뉴 이름

data[].price

Number

메뉴 가격

data[].description

String

메뉴 설명

data[].deleted

Boolean

삭제 여부

메뉴 수정

http-request
PATCH /api/menus/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1
Content-Type: application/json
Authorization: Bearer jwt-token
Content-Length: 111
X-CSRF-TOKEN: zR_2UnrcOSMoKtstOU7Cniw40s0r-hr7PN1zX9WyK9UMBRd4rCqXZUzlXRQFHuJOCWP2rhVZ_6xKyy3WWOwRaubTHOU9NHVO
Host: localhost:8080

{
  "name" : "새로운 메뉴 이름",
  "price" : 15000,
  "description" : "맛있는 메뉴 설명 예시"
}
Table 84. request-header
Name Description

Authorization

JWT 토큰

Table 85. /api/menus/{menuId}
Parameter Description

menuId

메뉴 ID

Table 86. request-fields
Path Type Description Required

name

String

메뉴 이름

true

price

Number

메뉴 가격

true

description

String

메뉴 설명

true

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 304

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "id" : "550e8400-e29b-41d4-a716-446655440000",
    "name" : "새로운 메뉴 이름",
    "price" : 15000,
    "description" : "맛있는 메뉴 설명 예시",
    "deleted" : false
  }
}
Table 87. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

메뉴 ID

data.name

String

메뉴 이름

data.price

Number

메뉴 가격

data.description

String

메뉴 설명

data.deleted

Boolean

삭제 여부

메뉴 삭제

http-request
DELETE /api/menus/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1
Authorization: Bearer jwt-token
X-CSRF-TOKEN: QtsKIdS6nl3-OLcCy6HWMgFkAq-ya90q4jDePvQqhFwIjl6vJ-08Q7KN_W7TXoEy-IziCzkFL5fQU7kH1wC_WJFO4Tpu6mub
Host: localhost:8080
Table 88. request-header
Name Description

Authorization

JWT 토큰

Table 89. /api/menus/{menuId}
Parameter Description

menuId

메뉴 ID

http-response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 305

{
  "code" : 200,
  "status" : "success",
  "message" : "성공적으로 처리되었습니다.",
  "data" : {
    "id" : "550e8400-e29b-41d4-a716-446655440000",
    "name" : "맛있는 메뉴",
    "price" : 15000,
    "description" : "매콤달콤한 맛이 일품인 메뉴",
    "deleted" : true
  }
}
Table 90. response-field
Path Type Description

code

Number

응답 코드

status

String

응답 상태

message

String

응답 메시지

data.id

String

메뉴 ID

data.name

String

메뉴 이름

data.price

Number

메뉴 가격

data.description

String

메뉴 설명

data.deleted

Boolean

삭제 여부