# API 문서 ## User 관련 ### 로그인 ---- 사용자 로그인 기능 제공 * URL `/api/v1/login` * Method: `POST` * URL Params Required: None * Body ```JSON { email : String, password : String } ``` * Success Response: * Code: 200 OK Content: ```json { token_type : String, access_token : String, refresh_token : String, user_id : Long, email : String } ``` * Error Response: * Password를 잘못 입력한경우 * Code: 400 BAD REQUEST Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` * Email을 잘못 입력하거나, 없는 Email인 경우 * Code: 404 NOT FOUND Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 회원가입 ---- 사용자 회원가입 기능 제공 * URL `/api/v1/signup` * Method: `POST` * URL Params Required: None * Body ```JSON { email : String, password : String, nickname : String } ``` * Success Response: * Code: 201 CREATED Content: ```json { userId : Long } ``` > 201 CREATED : 회신 메시지의 body에 생성된 자원을 동봉해야 하지만, 그냥 일단 userId만 포함시켰음 * Error Response: * Email이 중복되었거나, Nickname이 중복된 경우 * Code: 409 CONFLICT Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 이메일 검증 ---- 사용자 회원가입시, 이메일 중복 검사 기능 제공 * URL `/api/v1/users/validation?email={email}` * Method: `GET` * Query Params Required: `email : String` * Body None * Success Response: * Code: 204 NO CONTENT Content: None * Error Response: * Email이 중복된 경우 * Code: 409 CONFLICT Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 별명 검증 ---- 사용자 회원가입시, 별명 중복 검사 기능 제공 * URL `/api/v1/users/validation?nickname={nickname}` * Method: `GET` * URL Params Required: `nickname : String` * Body None * Success Response: * Code: 204 NO CONTENT Content: None * Error Response: * Nickname이 중복된 경우 * Code: 409 CONFLICT Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 비밀번호 수정하기 ---- 사용자의 정보를 수정하는 기능 * URL `/api/v1/users/{user_id}` * Method: `PUT` * URL Params Required: `user_id : Long` * Body ```json { beforePassword : String, afterPassword : String } ``` * Success Response: * Code: 200 OK Content: ```json { email : String, nickname : String } ``` * Error Response: * 존재하지 않는 User인 경우(User id가 잘못되었을경우) * Code: 404 NOT FOUND Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` * BeforePassword가 User의 비밀번호와 다를경우 * Code: 400 BAD REQUEST Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 유저 탈퇴하기 ---- 사용자 탈퇴기능 * URL `/api/v1/users/{user_id}` * Method: `DELETE` * URL Params Required: `user_id : Long` * Body None * Success Response: * Code: 200 OK Content: ```json { userId : Long } ``` * Error Response: * Code: 401 UNAUTHORIZED Content ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` * Code: 400 BAD REQUEST Content ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 유저 로그아웃하기 ---- 유저 로그아웃하는 기능, Redis에 저장된 정보를 삭제하고, 사용했던 AccessToken을 Lock한다. * URL `/api/v1/logout` * Method: `POST` * URL Params Required: None * Body ```json { email : String, uuid : String, access_token : String } ``` * Success Response: * Code: 200 OK Content: ```json { true } ``` * Error Response: * Code: 401 UNAUTHORIZED Content ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` * Code: 400 BAD REQUEST Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` ### 유저 로그아웃하기 ---- 유저 로그아웃하는 기능, Redis에 저장된 정보를 삭제하고, 사용했던 AccessToken을 Lock한다. * URL `/api/v1/refresh` * Method: `POST` * URL Params Required: None * Body ```json { email : String, uuid : String, access_token : String } ``` * Success Response: * Code: 204 NO CONTENT Content: None Header : Authorization : AccessToken * Error Response: * Code: 401 UNAUTHORIZED Content ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ``` * Code: 400 BAD REQUEST Content: ```json { errorMsg : String, statusCode : String, uriRequested : String, timestamp : String } ```