# Glory Server API ### date: 2022-10-17, version: 0.1.0 ## 공통 * 개발서버: https://dev-api.gloryapi.net/ ~~ * 운영서버: https://api.gloryapi.net/ ~~ (아직 미배포) * 헬스체크 URL: https://dev-api.gloryapi.net/public-api/v1/health * URL 이 /public-api 로 시작하면 인증토큰(jwt)이 필요없는 경우, /api 로 시작하면 인증토큰(jwt)이 필요한 경우 * Content-Type: application/json 으로 고정해주세요. * Http header Authorization: Bearer {JWT} 형식을 사용합니다. * 실패시에는 * 에러코드(code) | 에러메시지(messsage) | client action * 400 | 클라이언트 호출 오류로써 대부분 파라미터 오류 | 파라미터 확인 * 401 | 인증실패 오류 | 로그인을 다시해서 JWT를 다시 받아야 함 * 403 | 미인가 오류 | 로그인을 다시해서 JWT를 다시 받아야 함 * 500 | 서버오류 | 서버오류로써 서버로그를 확인해야 함 (저에게 연락주세요) * 클라이언트의 실수로 오류가나면 400 을 리턴, 인증오류는 401, 미인가접근 403, 서버오류는 500을 리턴합니다. * 아래와 같은 포맷을 유지합니다. ``` {"code":"에러코드","message":"에러메시지"} ``` ## 1. 회원가입 * 회원가입을 하고 성공하면 jwt를 리턴한다. * 회원가입 성공후 로그인으로 튕겨서 다시 로그인하게 할수도 있는데 우선 성공하면 jwt 를 리턴하도록 합니다. ### POST /public-api/v1/join ``` { "id": "test-user-1", # 회원 아이디 (로그인 시에 사용) "password": "abcd", # 비밀번호 (로그인 시에 사용) "name": "홍길동", # 성명 "nickname": "oracleman", # 닉네임 "email": "abc@gmail.com" # 이메일 } ``` ### 성공 200 OK * jwt 를 리턴하며 개발서버는 TTL 2시간 적용, 운영서버는 60일적용 ``` { "data": { "result": "ok", # 성공응답 보조결과. 아래 `token` 이 존재하면 성공이지만 클라이언트에서 성공여부에 대한 판단의 용이성을 위한 리턴값. 실패이면 400,401,500 오류를 리턴하며 위 형식참고 "token": "eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiIyIiwiaWF0IjoxNjYyODA2MzY5LCJleHAiOjE2NjI4MTM1NjksImlzcyI6ImNvbS5zbWFydGgiLCJsb2dpbkNoYW5uZWwiOiJpZF9wdyJ9.Uti8P-dps6Ke_J-852g9eVylCa6GqGZU-ZOvGFCSMlXbTKpbvnnBlVeeZnRNr4PV" # JWT } } ``` ### 400 Bad Request * 올바른 파라미터 형식이 아니면 오류 리턴 ``` { "code": "400", "message": "유효하지 않은 파라미터입니다." } ``` ### 400 Bad Request * id 기준으로 이미 가입되어 있다면 아래와 같은 오류 리턴 ``` { "code": "400", "message": "이미 존재하는 유저입니다. memberId: test-user-1" } ``` ## 2. 로그인 * id, password 로 로그인하고 성공하면 jwt 를 리턴한다. ### POST /public-api/v1/login ``` {"id":"test-user-1","password":"패스워드 값"} ``` ### 성공 200 OK * jwt 를 리턴하며 개발서버는 TTL 2시간 적용, 운영서버는 60일적용 ``` { "data": { "result": "ok", "token": "eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiIyIiwiaWF0IjoxNjYyODA5NzY4LCJleHAiOjE2NjI4MTY5NjgsImlzcyI6ImNvbS5zbWFydGgiLCJsb2dpbkNoYW5uZWwiOiJpZF9wdyJ9.MmdezYSQhn8rNstwTtcGzWmCO7fO2-_Qp3swOOcFQEEo_GnOHv-UrdMVSOwNo-a8" } } ``` ### 실패 400 Bad Request * id 혹은 password 가 일치하지 않는 경우 ``` { "code": "400", "message": "ID/PASSWORD 정보가 일치하지 않습니다 !" } ``` ## 3. JWT 유효성 검사 * JWT 가 유효한지 여부를 판단하기 위한 API * 필수헤더: Authorization * 파라미터 없음. * 인증된 사용자에 대한 비즈니스 로직 실행전에 체크용도로 사용할 수 있음. ### GET /api/v1/check_login ### 성공 200 OK ``` { "data": { "result": "ok" } } ``` ### 실패 403 Forbidden * 대부분 키가 만료 된 경우로써 다시 /login 해야함. ``` { "code": "403", "message": "Full authentication is required to access this resource" } ``` ## 4. 프로필 조회 * 필수헤더: Authorization * Authroization : Bearer ${JWT토큰} * 파라미터 없음 ### GET /api/v1/profile ### 성공 200 OK ``` { "data": { "result": "ok", "profile": { "id": "test001", "name": "홍길동", "nickname": "홍길똥", "email": "yoe21@gmail.com", "point": 1000, "todayLogin": "2022-10-17 14:12:05", "datetime": "2022-10-17 14:12:05", "homepage": "" } } } ```