문제집 API

문제집 전체 보기

요청

GET /api/workbooks HTTP/1.1
Authorization: Bearer botobo.access.token
Host: botobo.r-e.kr

응답

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 263

[ {
  "id" : 1,
  "name" : "피케이의 자바 문제 20선",
  "cardCount" : 20
}, {
  "id" : 2,
  "name" : "오즈의 비올 때 푸는 Database 문제",
  "cardCount" : 15
}, {
  "id" : 3,
  "name" : "조앤의 Network 정복 모음집",
  "cardCount" : 8
} ]

문제집별 카드 모아보기

요청

GET /api/workbooks/1/cards HTTP/1.1
Authorization: Bearer botobo.access.token
Host: botobo.r-e.kr

응답

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 357

{
  "workbookName" : "Java",
  "cards" : [ {
    "id" : 1,
    "question" : "Java에는 a가 몇 개 들어갈까요?",
    "answer" : "2개"
  }, {
    "id" : 2,
    "question" : "Java에는 v가 몇 개 들어갈까요?",
    "answer" : "1개"
  }, {
    "id" : 3,
    "question" : "Java에는 j가 몇 개 들어갈까요?",
    "answer" : "1개"
  } ]
}

카드 API

또 보기 카드 선택하기

요청

PUT /api/cards/next-quiz HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer botobo.access.token
Accept: application/json
Content-Length: 29
Host: botobo.r-e.kr

{
  "cardIds" : [ 1, 2, 3 ]
}

응답

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

퀴즈 API

퀴즈 생성하기

요청

POST /api/quizzes HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer botobo.access.token
Accept: application/json
Content-Length: 33
Host: botobo.r-e.kr

{
  "workbookIds" : [ 1, 2, 3 ]
}

응답

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 1113

[ {
  "id" : 3,
  "question" : "Javascript 질문 2",
  "answer" : "Javascript 답 2",
  "workbookName" : "Javascript"
}, {
  "id" : 10,
  "question" : "Java 질문 1",
  "answer" : "Java 답 1",
  "workbookName" : "JAVA"
}, {
  "id" : 2,
  "question" : "Java 질문 3",
  "answer" : "Java 답 3",
  "workbookName" : "JAVA"
}, {
  "id" : 11,
  "question" : "Spring 질문 1",
  "answer" : "Java 답 1",
  "workbookName" : "JAVA"
}, {
  "id" : 1,
  "question" : "Java 질문 2",
  "answer" : "Java 답 2",
  "workbookName" : "JAVA"
}, {
  "id" : 4,
  "question" : "Spring 질문 6",
  "answer" : "Spring 답 6",
  "workbookName" : "Spring"
}, {
  "id" : 7,
  "question" : "Javascript 질문 9",
  "answer" : "Javascript 답 9",
  "workbookName" : "Javascript"
}, {
  "id" : 21,
  "question" : "Spring 질문 3",
  "answer" : "Spring 답 3",
  "workbookName" : "Spring"
}, {
  "id" : 17,
  "question" : "Javascript 질문 4",
  "answer" : "Javascript 답 4",
  "workbookName" : "Javascript"
}, {
  "id" : 14,
  "question" : "Javascript 질문 1",
  "answer" : "Javascript 답 1",
  "workbookName" : "Javascript"
} ]

퀴즈 생성 실패 - 존재하지 않는 카테고리 id

요청

POST /api/quizzes HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer botobo.access.token
Accept: application/json
Content-Length: 36
Host: botobo.r-e.kr

{
  "workbookIds" : [ 1, 2, 1000 ]
}

응답

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 64

{
  "message" : "해당 문제집을 찾을 수 없습니다."
}

비회원용 퀴즈 생성하기

요청

GET /api/quizzes/guest HTTP/1.1
Host: botobo.r-e.kr

응답

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 1113

[ {
  "id" : 3,
  "question" : "Javascript 질문 2",
  "answer" : "Javascript 답 2",
  "workbookName" : "Javascript"
}, {
  "id" : 10,
  "question" : "Java 질문 1",
  "answer" : "Java 답 1",
  "workbookName" : "JAVA"
}, {
  "id" : 2,
  "question" : "Java 질문 3",
  "answer" : "Java 답 3",
  "workbookName" : "JAVA"
}, {
  "id" : 11,
  "question" : "Spring 질문 1",
  "answer" : "Java 답 1",
  "workbookName" : "JAVA"
}, {
  "id" : 1,
  "question" : "Java 질문 2",
  "answer" : "Java 답 2",
  "workbookName" : "JAVA"
}, {
  "id" : 4,
  "question" : "Spring 질문 6",
  "answer" : "Spring 답 6",
  "workbookName" : "Spring"
}, {
  "id" : 7,
  "question" : "Javascript 질문 9",
  "answer" : "Javascript 답 9",
  "workbookName" : "Javascript"
}, {
  "id" : 21,
  "question" : "Spring 질문 3",
  "answer" : "Spring 답 3",
  "workbookName" : "Spring"
}, {
  "id" : 17,
  "question" : "Javascript 질문 4",
  "answer" : "Javascript 답 4",
  "workbookName" : "Javascript"
}, {
  "id" : 14,
  "question" : "Javascript 질문 1",
  "answer" : "Javascript 답 1",
  "workbookName" : "Javascript"
} ]

관리자 API

관리자 권한으로 문제집 추가하기

요청

POST /api/admin/workbooks HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer botobo.access.token
Accept: application/json
Content-Length: 21
Host: botobo.r-e.kr

{
  "name" : "JAVA"
}

응답

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /api/admin/workbooks/1
Content-Type: application/json
Content-Length: 33

{
  "id" : 1,
  "name" : "JAVA"
}

관리자 권한으로 카드 추가하기

요청

POST /api/admin/cards HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer botobo.access.token
Accept: application/json
Content-Length: 72
Host: botobo.r-e.kr

{
  "question" : "질문1",
  "answer" : "답변1",
  "workbookId" : 1
}

응답

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /api/admin/cards/1
Content-Type: application/json
Content-Length: 103

{
  "id" : 1,
  "question" : "질문1",
  "answer" : null,
  "workbookId" : 1,
  "encounterCount" : 0
}

카드 생성 실패

문제집 존재하지 않음

요청

POST /api/admin/cards HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer botobo.access.token
Accept: application/json
Content-Length: 75
Host: botobo.r-e.kr

{
  "question" : "질문1",
  "answer" : "답변1",
  "workbookId" : 1000
}

응답

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 64

{
  "message" : "해당 문제집을 찾을 수 없습니다."
}

로그인 API

Github 소셜 로그인

요청

POST /api/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Accept: application/json
Content-Length: 27
Host: botobo.r-e.kr

{
  "code" : "githubCode"
}

응답

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 43

{
  "accessToken" : "botobo.access.token"
}