server 디렉토리에서 다음의 명령어로 실행
- 기본
yarn start
- 개발 - 파일 변경 감지시 자동 재시작
yarn dev
-
server.ts
-
config.ts
-
-
db.ts
-
index.ts
-
type.ts
-
-
answer.ts
-
assignment.ts
-
authCheck.ts
-
cookieTest.ts
-
login.ts
-
logout.ts
-
student.ts
-
token.ts
-
userInfo.ts
-
- answerPaperModel.ts
- assignmentModel.ts
- groupModel.ts
- meta.ts
-
-
서버 구동 파일
Vault 서버에 요청을 보내 환경변수를 가져오는 파일
DB 연동 파일
인덱스 파일
타입 정의 파일
답안 관련 API 파일
과제 관련 API 파일
로그인이 필요한 API 들을 묶은 라우터 파일
디버그용 계정 토큰 발급 파일
로그인 관련 API 파일
로그아웃 관련 API 파일
수강생 목록 관련 API 파일
로그인시 프론트에서 비밀번호 암호화를 위한 토큰을 발급하는 API 파일
유저 정보 반환 API 파일
답안 스키마를 정의해놓은 파일
과제 스키마를 정의해놓은 파일
수강생 목록 스키마를 정의해놓은 파일
이외에 필요한 함수, 객체들을 정의해놓은 파일
/v1/login
로그인 api
요청 예시
{ "userIw": "아이디", "userPw": "비밀번호" }
응답
200 - 정상 처리
{ "userId": "아이디", "userName": "홍길동", "userNumber": 2016920003, }
400 - 잘못된 요청
403 - 인증 실패
500 - 내부 서버 오류
/v1/logut
로그아웃 api
응답
204 - 정상 처리
500 - 내부 서버 오류
/v1/assignment
과제 생성, 수정 api
요청 예시
{ "assignmentId": -1,(생성: -1, 수정: 자연수) "students": [ 2016920001, 2016920002, 2016920003, ], "assignmentName": "과제 이름", "assignmentInfo": "과제 정보", "publishingTime": "2020-08-05T05:03:01.292Z", "deadline": "2020-08-05T05:03:01.292Z", "questions": [ { "questionContent": "1+1 은?", "fullScore": 30 } ] }
응답
200 - 정상 처리
{ "meta": { "createdAt": "2020-08-28T15:40:17.331Z", "modifiedAt": "2020-08-29T13:31:15.926Z" }, "students": [ 2016920001, 2016920002, 2016920003, ], "questions": [ { "questionId": 0, "questionContent": "1+1은?", "fullScore": 30 } ], "professorNumber": 1016920003, "assignmentName": "과제 이름", "assignmentInfo": "과제 정보", "publishingTime": "2020-08-28T06:43:33.265Z", "deadline": "2020-08-31T06:43:00.000Z", "assignmentId": 4, "assignmentState": 1 }
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
500 - 내부 서버 오류
/v1/answer/{assignmentId}
답안 생성, 수정 api
요청 예시
{ "answers": [ { "questionId": 0, "answerContent": "답안1" }, { "questionId": 1, "answerContent": "답안2" } ] }
응답
200 - 정상 처리
{ "meta": { "createdAt": "2020-08-29T16:15:00.526Z", "modifiedAt": "2020-08-29T16:15:00.527Z" }, "answers": [ { "score": -1, "questionId": 0, "answerContent": "답안1" } ], "userNumber": 2016920003, "professorNumber": 1016920003, "assignmentId": 4, }
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/answer/{assignmentId}/{userNumber}
채점 api
요청 예시
{ "answers": [ { "questionId": 0, "score": 20 }, { "questionId": 1, "score": 30 } ] }
응답
200 - 정상 처리
{ "meta": { "createdAt": "2020-08-29T16:15:00.526Z", "modifiedAt": "2020-08-29T16:15:00.527Z" }, "answers": [ { "questionId": 0, "answerContent": "답안1", "score": 20, }, { "questionId": 1, "answerContent": "답안2", "score:" 30, } ], "userNumber": 2016920003, "professorNumber": 1016920003, "assignmentId": 4, }
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/student
수강생 목록 생성, 수정 api
요청 예시
{ "groupId": -1, (생성: -1, 수정: 자연수) "className": "이산 수학", "students": [ 2016920001, 2016920002, 2016920003, ] }
응답
200 - 정상 처리
{ "groupId": 0, "className": "이산 수학", "professorNumber": 1016920003, "students": [ 2016920001, 2016920002, 2016920003 ], "meta": { "createdAt": "2020-08-28T15:40:17.331Z", "modifiedAt": "2020-08-29T13:31:15.926Z" } }
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/assignment
전체 과제 조회 api
응답
200 - 정상 처리
[ { "meta": { "createdAt": "2020-08-28T15:40:17.331Z", "modifiedAt": "2020-08-29T13:31:15.926Z" }, "students": [ 2016920001, 2016920002, 2016920003, ], "questions": [ { "questionId": 0, "questionContent": "1+1은?", "fullScore": 30 } ], "professorNumber": 1016920003, "assignmentName": "과제 이름", "assignmentInfo": "과제 정보", "publishingTime": "2020-08-28T06:43:33.265Z", "deadline": "2020-08-31T06:43:00.000Z", "assignmentId": 4, "assignmentState": 1 } ]
401 - 인증 실패
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/assignment/{assignmentId}
과제 조회 api
응답
200 - 정상 처리
{ "meta": { "createdAt": "2020-08-28T15:40:17.331Z", "modifiedAt": "2020-08-29T13:31:15.926Z" }, "students": [ 2016920001, 2016920002, 2016920003, ], "questions": [ { "questionId": 0, "questionContent": "1+1은?", "fullScore": 30 } ], "professorNumber": 1016920003, "assignmentName": "과제 이름", "assignmentInfo": "과제 정보", "publishingTime": "2020-08-28T06:43:33.265Z", "deadline": "2020-08-31T06:43:00.000Z", "assignmentId": 4, "assignmentState": 1 }
400 - 잘못된 요청
401 - 인증 실패
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/answer/{assignmentId}
학생이 본인의 답안 조회 api
응답
200 - 정상 처리
{ "professorNumber": 0, "userNumber": 0, "assignmentId": 0, "answers": [ { "questionId": 0, "answerContent": "string", "score": 0 } ], "meta": { "createAt": "2020-08-29T10:46:19.543Z", "modifiedAt": "2020-08-29T10:46:19.543Z" } }
401 - 인증 실패
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/answer/{assignmentId}/{userNumber}
교수가 학생의 답안 조회 api
응답
200 - 정상 처리
{ "professorNumber": 0, "userNumber": 0, "assignmentId": 0, "answers": [ { "questionId": 0, "answerContent": "string", "score": 0 } ], "meta": { "createAt": "2020-08-29T10:46:19.543Z", "modifiedAt": "2020-08-29T10:46:19.543Z" } }
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/student
수강생 목록 조회 api
응답
200 - 정상 처리
[ { "groupId": 0, "className": "이산 수학", "professorNumber": 1016920003, "students": [ 2016920001, 2016920002, 2016920003 ] "meta": { "createAt": "2020-08-29T10:46:19.543Z", "modifiedAt": "2020-08-29T10:46:19.543Z" } } ]
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/userInfo
유저 정보 조회 api
응답
200 - 정상 처리
{ "userId": "아이디", "userName": "홍길동", "userNumber": 2016920003 }
401 - 인증 실패
500 - 내부 서버 오류
/v1/token
토큰 조회 api
응답
200 - 정상 처리
"토큰"
401 - 인증 실패
404 - 찾을 수 없음
500 - 내부 서버 오류
/v1/assignment/{assignmentId}
과제 삭제 api
응답
204 - 정상 처리
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
500 - 내부 서버 오류
/v1/student/{groupId}
그룹 삭제 api
응답
204 - 정상 처리
400 - 잘못된 요청
401 - 인증 실패
403 - 권한 없음
500 - 내부 서버 오류