공통 응답 형식

i) 데이터가 있는 경우

{
"status": "OK",
"code": 200,
"message": "자주 하는 질문 조회가 완료되었습니다.",
"result": {
"articles": [
{
"id": 10,
"title": "i am title",
"content": "i am content"
},
{
"id": 9,
"title": "i am title",
"content": "i am content"
}, … ]
}

ii) 데이터가 없는 경우

{
"status": "OK",
"code": 200,
"message": "공지사항 수정이 완료되었습니다."
}

ii) 에러가 발생한 경우

{
"status": "Error",
"code": 404,
"message": "Illegal Argument"
}

메인페이지 관련 API

기능 URI METHOD Request body Response body 참고할 사항
1 모의고사 리스트 출력 /exams GET {
”exams”: [
  {
        “id”: 1
        “teacher”: “teacher”,
        “target_date”: 12,
        “correct_answer”:0,
       “wrong_answer”: 0
  },

{ “id”: 2 “teacher”: “teacher2”, “target_date”: 11, “correct_answer”:37, “wrong_answer”: 3 }, { …… } ] } | id 기출문제 고유 번호 | | | 2 | 채점하기 | /exams/grading | POST | “answer”: [A, B, C, A, B] | “correct_answer”: 35 ”wrong_answer”: 5 | | | | 3 | 틀린 문제 보기 | /exams/wrong_problems/{mock_exam_id}/{order} | GET | | “wrong_problem”: { ”id”: “2”, ”problem”: “”, ”choice_a”: “~”, ”choice_b”: “~”, ”choice_c”: “~”, ”choice_d”: “~”, ”answer”: “A” } | order는 몇 번째 문제인지 보내고 | | | 4 | 즐겨찾기한 문제 보기 | /exams/star_problems/{order} | GET | | “star”: { ”id”: “1”, //즐겨찾기 한 문제의 고유 번호 ”problem”: “”, ”choice_a”: “~”, ”choice_b”: “~”, ”choice_c”: “~”, ”choice_d”: “~”, ”answer”: “A” } | | | | 5 | 즐겨찾기 추가/삭제 | /exams/star_problems/{id} | PUT DELETE | | | | | | 6 | 틀린 문제 삭제 | /exams/wrong_problems/{id} | DELETE | | | | |

로그인/회원가입 관련 API

기능 URI METHOD Request body Response body 참고할 사항
1 로그인 /users/login POST {
“username”:username,
“password”:password
} status code JWT 검색

액세스 토큰 리프레쉬 토큰

클라이언트에서 두 토큰 보관

어떤 작업을 할 때마다 헤더에 담아서 bearer token | | 2 | 로그아웃 | /users/logout | GET | bearer token에 담겨있는 access_token에 대한 로그아웃을 진행합니다. | status Code | | | 3 | 회원가입 | /users/signup | POST | {

“username”: 아이디, “password”: 비밀번호, “password_confirm” : 비밀번호 확인, “email”: 이메일 } | status code | 이미지 파일을 변환하지 않고 그대로 받고 싶은 | | 4 | 아이디 중복 확인 | /users/id_duplicate_check | POST | { ”id”: “idexample” } | //사용 가능 → 인증 { "status": "OK", "code": 200,}

//이미 가입된 메일 { "status": "ERROR", "code": 409, "message": "username already exists" } | | | 5 | 이메일 인증 번호 발송 →이미 가입한 이메일은? | /users/send_certification_number | POST | { ”email”: “[email protected]” } | { ”certification_number”: “V759LB7A” } | | | 6 | 이메일 인증 번호 확인 | /users/certification_number_confirm | POST | { "username": "[email protected]", "certification_number": "V759LB7A" } | ~~{ "status": "OK", "code": 200, "message": "인증번호가 일치합니다." }

{ "status": "OK", "code": 406, "message": "인증번호가 일치하지 않습니다." }~~ | | | 7 | 회원정보조회 | 전체회원조회 /users | GET | 본인정보 조회의 경우 bearer token에 담겨있는 access_token 이 관리자일 경우에만 사용 가능 | status code [ “username”: 아이디, “email”: 이메일 ] | 로그인을 유지하는 요청 header에 토큰을 담아서 계속 보내기 | | 8 | 회원정보수정 | /users | PATCH | { "password": "newpassword!@", "password_confirm": "newpassword!@", "email": "new 이메일" } | status code | | | 9 | refresh token 재발급 | /users/refresh | GET | bearer token에 담겨있는 refresh_token에 대한 access token 재발급을 진행합니다. (refresh_token은 변경 X; 원하면 가능) | { "status": "OK", "code": 200, "message": "refresh success", "result": { "result": { "accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyQHVzZXIuY29tIiwicm9sZSI6IlJPTEVfVVNFUiIsImlkIjozLCJpYXQiOjE2ODQ2MTcwMzksImV4cCI6MTY4NDYyMDYzOX0.MtAR2zi_0Yeb86IOG5J09Df19oYKY", "refreshToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyQHVzZXIuY29tIiwiaWF0IjoxNjg0NjE3MDI5LCJleHAiOjE2ODUyMjE4Mjl9" } } } | 토큰 해석 탈취할 수 있어서 로그인 한 유저는 토큰 생성 토큰 유효기간이 있음 만료되면 만료됐다고 서버에서 보내줌

로그인 할 때 한 사용자에 토큰 2개 생성

엑세스 토큰(15분~30분)

리프레쉬 토큰(일주일) 액세스 토큰 만료 시 리프레쉬 토큰 보내면 새 엑세스 토큰 발급 | | 10 | 회원정보수정용 로그인 사용자 정보 받기 | /users/check | GET | bearer token에 담겨있는 access_token에 대한 사용자의 정보 조회를 진행합니다. | [ “username”: 아이디, “password”: 비밀번호, “password_confirm” : 비밀번호 확인, “manager_email”: 담당자 이메일 ] | | | 11 | 회원탈퇴 | /users | DELETE | bearer token에 담겨있는 access_token에 대한 회원탈퇴를 진행합니다. | status code | | | 12 | 아이디 찾기 | /users/find_id | POST | { "email": "[email protected]" } | ~~//code로 구분해놨으니까 이부분으로 체크하시면 쉬우실듯?

{ "status": "OK", "code": 409, "message": "해당 이메일은 이미 사용중입니다." }

{ "status": "OK", "code": 410, "message": "해당 이메일은 존재하지 않습니다." }~~ | 전화번호 인증은 유료서비스입니다. | | 13 | 비밀번호 찾기 | 이메일 인증 /users/find_password

| POST | { "username": "[email protected]" } | { "status": "OK", "code": 200, "message": "kGM3AiU0" } | | | 14 | 비밀번호 재설정 | /users/set_new_password | POST | { "username": "[email protected]", "password": "abcdef", "password_confirm": "abcdef", ”certification_number”: “V759LB7A" } | ~~{ "status": "OK", "code": 200, "message": "비밀번호 재설정이 완료되었습니다." }

{ "status": "ERROR", "code": 400, "message": "아이디 또는 비밀번호가 올바르지 않습니다." }~~ | |