Han, Dahyun <dvd.han00@gmail.com>

v1.0.0 updated on 2023.05.17


1. MemberController

1.1. 회원 등록

request
$ echo '{
  "name" : "David",
  "phone" : "010-1111-1111",
  "email" : "han@han.com",
  "password" : "1234"
}' | http POST 'http://localhost:8080/members/1' \
    'Content-Type:application/json' \
    'Accept:application/json'
Table 1. /members/{libraryId}
Parameter Description

libraryId

도서관 식별자

Table 2. request-fields
Path Type Description

name

String

이름

phone

String

휴대폰 번호

email

String

이메일

password

String

비밀번호

response-body
{
  "libraryId" : 1,
  "memberId" : 1,
  "name" : "David",
  "phone" : "010-1111-1111",
  "email" : "han@han.com",
  "password" : "1234",
  "url" : "http://localhost:8080/members/1"
}
Table 3. response-fields
Path Type Description

memberId

Number

회원 식별자

libraryId

Number

도서관 식별자

name

String

이름

phone

String

휴대폰 번호

email

String

이메일

password

String

비밀번호

url

String

조회 URL

1.2. 회원 조회

request
$ http GET 'http://localhost:8080/members/1/1' \
    'Accept:application/json'
Table 4. /members/{libraryId}/{memberId}
Parameter Description

libraryId

도서관 식별자

memberId

회원 식별자

response
{
  "libraryId" : 1,
  "memberId" : 1,
  "name" : "David",
  "phone" : "010-1111-1111",
  "email" : "han@han.com",
  "password" : "1234",
  "url" : "http://localhost:8080/members/1"
}
Table 5. response-fields
Path Type Description

libraryId

Number

소속 도서관 식별자

memberId

Number

회원 식별자

name

String

이름

phone

String

휴대폰 번호

email

String

이메일

password

String

비밀번호

url

String

조회 URL

1.3. 회원 삭제

request
$ http DELETE 'http://localhost:8080/members/1/1' \
    'Accept:application/json'
Table 6. /members/{libraryId}/{memberId}
Parameter Description

libraryId

도서관 식별자

memberId

회원 식별자

response
HTTP/1.1 204 No Content

1.4. 회원 대여 기록 조회

request
$ http GET 'http://localhost:8080/members/history/1?page=1&size=10' \
    'Accept:application/json'
Table 7. /members/history/{memberId}
Parameter Description

memberId

회원 식별자

Table 8. request-pathParameter
Parameter Description

page

내용이 나오는 페이지

size

한 페이지에 나오는 최대 갯수

response
{
  "data" : [ {
    "memberId" : 1,
    "libraryId" : 1,
    "bookId" : 1,
    "memberBookId" : 1,
    "bookTitle" : "해리포터",
    "createdAt" : "2023-05-19",
    "dueReturnDate" : "2023-06-02",
    "returnedDate" : "2023-05-19"
  } ],
  "pageinfo" : {
    "page" : 0,
    "size" : 1,
    "totalElements" : 1,
    "totalPages" : 1
  }
}

2. BookController

2.1. 도서 대여

request
$ http POST 'http://localhost:8080/books/1/1/1' \
    'Content-Type:application/json' \
    'Accept:application/json'
Table 9. /books/{libraryId}/{bookId}/{memberId}
Parameter Description

libraryId

대여하고자 하는 LibraryId

bookId

대여하고자 하는 도서관의 BookId

memberId

대여하는 도서관의 memberId

response
{
  "libraryId" : 1,
  "memberId" : 1,
  "bookId" : 1,
  "memberBookId" : 1,
  "bookTitle" : "해리포터",
  "createdAt" : "2023-05-19",
  "dueReturnDate" : "2023-06-02"
}
Table 10. response-fields
Path Type Description

libraryId

Number

대여한 LibraryId

memberId

Number

대여 당사자 memberId

bookId

Number

대여한 bookId

memberBookId

Number

대여된 memberBookId

bookTitle

String

대여한 책 이름

createdAt

String

대여한 날짜

dueReturnDate

String

최대 반납일

2.2. 대여 도서 반납

request
$ http DELETE 'http://localhost:8080/books/2/2/2' \
    'Content-Type:application/json' \
    'Accept:application/json'
Table 11. /books/{libraryId}/{bookId}/{memberId}
Parameter Description

libraryId

대여하고자 하는 LibraryId

bookId

대여하고자 하는 도서관의 BookId

memberId

대여하는 도서관의 memberId

response
{
  "memberId" : 1,
  "libraryId" : 1,
  "bookId" : 1,
  "memberBookId" : 1,
  "bookTitle" : "해리포터2",
  "createdAt" : "2023-05-04",
  "returnedAt" : "2023-05-19",
  "overdueDays" : 1,
  "message" : "연체가 발생되어 1일 동안 대여할 수 없습니다. 2023-05-20 일부터 대여할 수 있습니다."
}
Table 12. response-fields
Path Type Description

memberId

Number

반납한 회원 식별자

libraryId

Number

반납한 도서관 식별자

bookId

Number

반납한 도서 식별자

memberBookId

Number

반납한 대여책 식별자

bookTitle

String

책 제목

createdAt

String

대여한 책의 대여날짜

returnedAt

String

대여한 책의 반납날짜

overdueDays

Number

연체 날짜

message

String

반납 상태 메세지

2.3. 도서 검색

request
$ http GET 'http://localhost:8080/books/1?page=1&size=10' \
    'Accept:application/json'
Table 13. /books/{bookId}
Parameter Description

bookId

검색할 도서 Id

response
{
  "data" : [ {
    "libraryId" : 1,
    "bookId" : 1,
    "libraryBookId" : 1,
    "bookTitle" : "해리포터",
    "bookAuthor" : "JK롤링",
    "bookPublisher" : "A출판사",
    "bookStatus" : "AVAILABLE",
    "url" : "http://localhost:8080/books/1"
  } ],
  "pageinfo" : {
    "page" : 0,
    "size" : 1,
    "totalElements" : 1,
    "totalPages" : 1
  }
}
Table 14. response-fields
Path Type Description

data[].libraryId

Number

소속 도서관 ID

data[].bookId

Number

검색한 도서 ID

data[].libraryBookId

Number

도서관에 보관중인 책 ID

data[].bookTitle

String

검색한 도서 이름

data[].bookAuthor

String

검색한 도서 저자

data[].bookPublisher

String

검색한 도서 출판사

data[].bookStatus

String

검색한 도서의 대여 가능 여부

data[].url

String

url

pageinfo

Object

페이지 정보

pageinfo.page

Number

리스트의 현재 페이지

pageinfo.size

Number

페이지당 최대 표시 수

pageinfo.totalElements

Number

모든 페이지의 총 표시 수

pageinfo.totalPages

Number

총 페이지 수

3. LibraryController

3.1. 도서관 회원 조회

request
$ http GET 'http://localhost:8080/library/1/members?page=1&size=10' \
    'Accept:application/json'
Table 15. /library/{libraryId}/members
Parameter Description

libraryId

대상 도서관 ID

Table 16. request-pathParameter
Parameter Description

page

목록 페이지

size

한 페이지에 표시되는 최대 갯수

response
{
  "data" : [ {
    "libraryId" : 1,
    "memberId" : 1,
    "libraryMemberId" : 1,
    "name" : "David",
    "phone" : "010-1111-1111",
    "email" : "han@han.com",
    "url" : "http://localhost:8080/members/1"
  } ],
  "pageinfo" : {
    "page" : 0,
    "size" : 1,
    "totalElements" : 1,
    "totalPages" : 1
  }
}
Table 17. response-fields
Path Type Description

data[].libraryId

Number

소속 도서관 ID

data[].memberId

Number

검색한 회원 ID

data[].libraryMemberId

Number

도서관에 등록된 회원 ID

data[].name

String

검색한 회원 이름

data[].phone

String

검색한 회원 휴대번호

data[].email

String

검색한 회원 이메일

data[].url

String

url

pageinfo

Object

페이지 정보

pageinfo.page

Number

리스트의 현재 페이지

pageinfo.size

Number

페이지당 최대 표시 수

pageinfo.totalElements

Number

모든 페이지의 총 표시 수

pageinfo.totalPages

Number

총 페이지 수

3.2. 도서관 도서 조회

request
$ http GET 'http://localhost:8080/library/1/books?page=1&size=10' \
    'Accept:application/json'
Table 18. /library/{libraryId}/books
Parameter Description

libraryId

대상 도서관 ID

Table 19. request-pathParameter
Parameter Description

page

도서 목록 표시 페이지

size

도서 목록 페이지당 최대 표시 수

response
{
  "data" : [ {
    "libraryId" : 1,
    "bookId" : 1,
    "libraryBookId" : 0,
    "bookTitle" : "해리포터",
    "bookAuthor" : "JK롤링",
    "bookPublisher" : "A출판사",
    "bookStatus" : "AVAILABLE",
    "url" : "http://localhost:8080/books/0"
  } ],
  "pageinfo" : {
    "page" : 0,
    "size" : 1,
    "totalElements" : 1,
    "totalPages" : 1
  }
}
Table 20. response-fields
Path Type Description

data[].libraryId

Number

소속 도서관 ID

data[].bookId

Number

검색한 도서 ID

data[].libraryBookId

Number

도서관에 보관중인 책 ID

data[].bookTitle

String

검색한 도서 이름

data[].bookAuthor

String

검색한 도서 저자

data[].bookPublisher

String

검색한 도서 출판사

data[].bookStatus

String

검색한 도서의 대여 가능 여부

data[].url

String

url

pageinfo

Object

페이지 정보

pageinfo.page

Number

리스트의 현재 페이지

pageinfo.size

Number

페이지당 최대 표시 수

pageinfo.totalElements

Number

모든 페이지의 총 표시 수

pageinfo.totalPages

Number

총 페이지 수