Skip to content

API 문서

chasw0326 edited this page May 17, 2022 · 60 revisions

Index

대분류 기능 method URI
User 회원가입 POST /auth/user
로그인 POST /auth/login
토큰 확인 POST /api/token
이름 수정 PUT /api/user
비밀번호 변경 PUT /api/user/password
Course 코스 개설 POST /api/course
코스 조회(학생) GET /api/course/student
코스 조회(선생) GET /api/course/teacher
코스 정보 GET /api/course/{courseId}
코스 수정 PUT /api/course/{courseId}
코스 삭제 DELETE /api/course/{courseId}
코스 비밀번호 변경 PUT /api/course/password
코스 수강생 추가 POST /api/course/student
코스 강사 변경 PUT /api/course/teacher
Lesson 레슨 목록 GET /api/lesson/{courseId}
레슨 개설 POST /api/lesson
레슨명 수정 PUT /api/lesson/name/{lessonId}
레슨 설명 수정 PUT /api/lesson/description/{lessonId}
레슨 삭제 DELETE /api/lesson

1. User

1-1. 회원가입

  • 회원가입

URL

  • POST /auth/user

Request

param type required description
email body true 이메일
password body true 비밀번호(영어, 숫자 포함 8~20자리
name body true 이름

Request 예시

{
    "email": "testing@gmail.com",
    "password": "abcABC123!@#",
    "name": "홍길동"
}

Response 예시

  • 성공(200)
  • 실패(409 Conflict) : 중복된 이메일이 존재하는 경우
  • 실패(400 Bad Request)
    {
        "exception": "MethodArgumentNotValidException",
        "errors": {
            "password": "비밀번호는 영어와 숫자로 포함해서 8~20자리 이내로 입력해주세요."
        }
    }

1-2. 로그인

  • 사용자의 정보로 로그인한다.

URL

  • POST /auth/login

Request 예시

{
   "email" : "test@gmail.com",
   "password" : "1q2w3eQWE!@#"
}

Response 예시

  • 성공 200 OK text/plain
    eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NDg1NDA3NjYsImV4cCI6MTY1MTEzMjc2Niwic3ViIjoiMzI5QG5hdmVyLmNvbSJ9.nN_yyOcOwLncc-OHPMRBXdngtTHaOdEJulG5_HHKRq0
    
  • 실패 401 Unauthorized application/json
    {
        "code": "401",
        "message": "자격 증명에 실패하였습니다."
    }

코드 예시

  • localStorage에 담아서 다음 요청부터 Authorization에 Bearer Token으로 보내주세요.
const accessToken = localStorage.getItem("ACCESS_TOKEN");
  if (accessToken && accessToken !== null) {
    headers.append("Authorization", "Bearer " + accessToken);
  }


1-3. 토큰 확인

  • 토큰의 정보들을 확인한다.

URL

  • POST /auth/token

Request 예시

{
"token":"eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NDkwNzAxMjgsImV4cCI6MTY1MTY2MjEyOCwic3ViIjoic3R1ZGVudDFAbmF2ZXIuY29tIn0.rZID5ekTVeitq7Azql8xffGqjL_LXHzORndLuIbT45o"
}

Response 예시

{
    "userId": 1,
    "email": "student1@naver.com",
    "issuedAt": "2022-04-04T11:02:08.000+00:00",
    "expiredAt": "2022-05-04T11:02:08.000+00:00",
    "valid": true
}
  • 성공(200)

1-5. 이름 변경

  • 이름을 변경한다.

URL

  • PUT /api/user

Request 예시

{
    "name" : "로니콜먼"
}

Response 예시

  • 성공(200)

1-5. 비밀번호 변경

  • 비밀번호를 변경한다.

URL

  • PUT /api/user/password

Request 예시

{
    "currentPassword" : "aaaAAA!@#",
    "newPassword" : "bbbBBB!@#",
    "checkPassword" : "bbbBBB!@#",
}

Response 예시

  • 성공(200)

2. Course

2-1. 수업 개설

  • 일단 개설한 사람이 teacher로 설정됨

URL

  • POST /api/course

Request

param type required description
name body true 코스 이름
password body true 코스 비밀번호
description body true 코스 설명

Request 예시

{
    "name": "컴퓨터 공학 종합 설계",
    "password": "1234",
    "description": "컴퓨터 공학과 졸업작품"
}

Response 예시

  • 성공(200)

2-2. 내가 학생인 코스 목록

  • 내가 학생인 코스 리스트 가져오기

URL

  • GET /api/course/student

Request

  • None

Response 예시

[
    {
        "courseId": 26,
        "name": "코스26",
        "description": "설명26",
        "role": "student"
    },
    {
        "courseId": 9,
        "name": "코스9",
        "description": "설명9",
        "role": "student"
    }
]

2-3. 내가 강사인 코스 목록

  • 내가 강사인 코스 리스트 가져오기

URL

  • GET /api/course/teacher

Request

  • None

Response 예시

[
    {
        "courseId": 21,
        "name": "코스21",
        "description": "설명21",
        "role": "teacher"
    },
    {
        "courseId": 10,
        "name": "코스10",
        "description": "설명10",
        "role": "teacher"
    }
]

2-4. 수업정보와 참여자 정보

  • 수업정보와 참여자 정보 가져오기

URL

  • GET /api/course/{courseId}

Request

  • None

Response 예시

{
    "courseId": 2,
    "name": "마이크로 프로세서 응용",
    "description": "어려운 과목",
    "participants": [
        {
            "userId": 102,
            "email": "teacher2@naver.com",
            "name": "teacher2"
        },
        {
            "userId": 11,
            "email": "student11@naver.com",
            "name": "student11"
        },
        {
            "userId": 12,
            "email": "student12@naver.com",
            "name": "student12"
        },
        {
            "userId": 13,
            "email": "student13@naver.com",
            "name": "student13"
        },
        {
            "userId": 14,
            "email": "student14@naver.com",
            "name": "student14"
        },
        {
            "userId": 15,
            "email": "student15@naver.com",
            "name": "student15"
        }
    ]
}

2-5. 코스 수정 (작성중...)

  • 코스를 수정한다.

URL

  • PUT /api/course/{courseId}

Request

  • None

Response 예시

  • 성공(200)

2-6. 코스 삭제

  • 코스를 삭제한다.

URL

  • DELETE /api/course/{courseId}

Request

  • None

Response 예시

  • 성공(200)

2-7. 비밀번호 변경

  • 코스 비밀번호 변경

URL

  • PUT /api/course/password

Request

{
   "courseId" : 21,
   "password" : "1234"
}

Response 예시

  • 성공(200)

2-8. 수강생 추가

  • 코스에 수강생을 추가한다.

URL

  • POST /api/course/student

Request

{
    "emails" : ["student59@naver.com","student49@naver.com","student57@naver.com"],
    "courseId" : 21
}

Response 예시

  • 성공(200)

2-9. 강사 변경

  • 강사 변경

URL

  • PUT /api/course/teacher

Request

{
    "courseId" : 21,
    "teacherEmail" : "teacher2@naver.com"
}

Response

  • None

3. Lesson

3-1. 레슨 목록

  • 레슨 목록 가져오기

URL

  • GET /api/lesson/{courseId}

Request

  • None

Response 예시

[
    {
        "lessonId": 1,
        "courseId": 21,
        "name": "새로운 레슨",
        "description": "설명",
        "fileUrl": null
    },
    {
        "lessonId": 2,
        "courseId": 21,
        "name": "새로운 레슨2",
        "description": "설명2",
        "fileUrl": null
    }
]

3-2. 레슨 개설

  • 레슨 개설하기

URL

  • POST /api/lesson/{courseId}

Request

{
    "name": "새로운 레슨2",
    "description" : "설명2",
    "courseId" : 21
}

Response 예시

  • 성공(200)

3-3. 레슨명 수정

  • 레슨명 수정하기

URL

  • PUT /api/lesson/name/{lessonId}

Request

{
    "name" : "메서드와 문자열"
}

Response 예시

  • 성공(200)

3-4. 레슨 설명 수정

  • 레슨 설명 수정하기

URL

  • PUT /api/lesson/description/{lessonId}

Request

{
    "description" : "이번주는 휴강합니다."
}

Response 예시

  • 성공(200)

3-5. 레슨 삭제

  • 레슨 삭제하기

URL

  • DELETE /api/lesson/{lessonId}

Request

  • none

Response 예시

  • 성공(200)
Clone this wiki locally