※ 명세에 설명되어있지 않은 상태 코드나 데이터가 나왔다면 바로 알려주세요!



※ API 명세서 양식

API 타이틀은 제목 3으로 한다.

Route(주소) /part1/part2/:param1?query1={type}
API 목적 해당 API가 무슨 목적으로 만들어졌는지 설명한다.
Param Param 타입 및 설명 작성 (없으면 없음 으로 작성.)
Query Query 타입 및 설명 작성 (없으면 없음 으로 작성.)
Body Body 구조 및 설명 작성 (없으면 없음 으로 작성.)
성공 시 응답 success1: 설명
data1: 구조 작성 (없으면 없음 으로 작성.)
실패 시 응답 failure1: 설명
data1: 구조 작성 (없으면 없음 으로 작성.)

Auth 관련 API

Github OAuth 로그인

Route(주소) GET /api/auth/oauth/github
API 목적 Github OAuth 로그인 과정을 시작한다.
<a> 형식으로 접근 시 github 권한 허가 여부 페이지가 발생하며,
허가 시 OAuth 절차에 따라 Access Token 발급 후 Session에 User 데이터를 저장한다.
완료 시 Root 페이지로 이동한다.
Param 없음
Query 없음
Body 없음
성공 시 응답 요청시 302와 함께 OAuth 권한을 허락받기 위한 페이지 주소를 받는다.
실패 시 응답 실패 시 ‘/’으로 리다이렉션을 한다.

※ Issue: axios로 요청하여 이동할 링크를 받아온 뒤 해당 주소로 직접 접근을 시도하면 CORS 오류가 발생한다. 원인 파악 중. (<a> 태그로 접근 시 정상적인 로그인 가능)

→ axios 특성 상, 302 등의 리다이렉션 상태코드를 받으면 이와 함께 받은 주소로 자동으로 재요청을 보낸다. maxRedirects라는 옵션이 존재하긴 하나, 브라우저에서 axios를 사용하는 경우 해당 옵션은 무효화된다. 웬만하면 a 태그로 직접 접근할 것.

로그아웃

Route(주소) PUT /api/auth/logout
API 목적 로그아웃을 시도한다.
로그아웃 요청 시 세션을 파기하여 로그인 정보를 삭제한다.
Param 없음
Query 없음
Body 없음
성공 시 응답 200: 로그아웃 완료
실패 시 응답 401: 비로그인 유저가 로그아웃을 시도함.

로그인 여부 확인 (PR#49 이후 지원)

Route(주소) GET /api/auth/status
API 목적 로그인 여부를 확인한다.
Param 없음
Query 없음
Body 없음
성공 시 응답 200: 현재 로그인 상태
실패 시 응답 401: 현재 비로그인 상태

Workspace 관련 API