Skip to content

API 명세

강성준 edited this page Nov 24, 2022 · 30 revisions

😀 User

로그인

  • 소셜 로그인
  • GET /user/login?social=${'naver' | 'kakao' | 'google'}로 해당 페이지로 이동 후 인증 진행.
  • Redirection 문제 때문에 axios 가 아닌 anchor 태그 사용 권장.
  • 쿠키에 accessToken 식으로 jwt 토큰 생성.
  • DB 확인 후 미가입자 인 경우 signup 페이지로 이동.

회원가입

  • jwt payload 확인 및 재생성

    요청

    • POST /user 로 signupData 객체 전송 필수,
    {
       signupData : {
          nickname : string
          characterName : string
       }
    }
    

    응답

    • 성공 (200)
    "회원가입 완료!!"
    
    • 실패 (400)
    {
        "statusCode": 400,
        "message": [
            "특수문자는 불가합니다.",
            "nickname must be shorter than or equal to 12 characters",
            "nickname must be longer than or equal to 4 characters",
            "nickname must be a string",
            "nickname should not be empty",
            "characterName must be a string",
            "characterName should not be empty"
        ],
        "error": "Bad Request"
    }
    
       { // 토큰이 없는 경우
          "statusCode": 401,
          "message": "Unauthorized"
       }
    

로그아웃

  • GET /user/logout 요청 시 AccessToken 만료.

    요청

    • GET /user/logout

    응답

    • 성공 (200)
    "로그아웃 되었습니다."
    

회원탈퇴

  • DELETE /user 로 요청 시 Guards 로 토큰 인증 확인.

  • 토큰이 인증되었다면, DB에서 해당 유저 제거.

    요청

    • DELETE /user

    응답

    • 성공 (200)
    "캐릭터가 삭제 되었습니다."
    

인증

  • GET /user/auth 로 요청 시 Guards 로 토큰 인증 확인.

    요청

    • DELETE /user

    응답

    • nicknamecharacterName 반환
    • 성공 (200)
    {
        "nickname": "stouter",
        "characterName": "cat"
    }
    
    • 실패
    {
        "statusCode": 401,
        "message": "Unauthorized"
    }

유저데이터 변경 (닉네임, 캐릭터 변경)

  • **signup API 와 동일**

  • jwt payload 확인 및 재생성

    요청

    • POST /user 로 signupData 객체 전송 필수,
    {
       signupData : {
          nickname : string
          characterName : string
       }
    }
    

    응답

    • 성공 (200)
    "회원가입 완료!!"
    
    • 실패 (400)
    {
        "statusCode": 400,
        "message": [
            "특수문자는 불가합니다.",
            "nickname must be shorter than or equal to 12 characters",
            "nickname must be longer than or equal to 4 characters",
            "nickname must be a string",
            "nickname should not be empty",
            "characterName must be a string",
            "characterName should not be empty"
        ],
        "error": "Bad Request"
    }
    

🧑‍🤝‍🧑 친구 기능

팔로우 목록 조회

  • 내가 팔로잉 중인 사람들의 목록 반환.

    요청

    • GET /friendship

    응답

    • 성공 (200)
    [ // 팔로잉 2명
        {
            "nickname": "hungjin",
            "characterName": "lion"
        },
        {
            "nickname": "hj",
            "characterName": "lion"
        }
    ]
    
     []// 팔로잉 0명
    

닉네임으로 팔로우 신청

  • PUT /friendship/{상대닉네임} 으로 요청

    요청

    • PUT /friendship/{상대닉네임}

    응답

    • 성공 (200)
    "팔로우 성공"
    • 실패 (404)
    {
         "statusCode": 404,
         "message": "이미 팔로우한 유저입니다.",
         "error": "Not Found"
    }
    

닉네임으로 팔로우 취소

  • DELETE /friendship/{상대닉네임} 으로 요청

    요청

    • DELETE /friendship/{상대닉네임}

    응답

    • 성공 (200)
    "팔로우 성공"
    • 실패 (404)
    {
        "statusCode": 404,
        "message": "팔로우 취소 실패",
        "error": "Not Found"
    }

👨‍👩‍👧‍👦 공유 (SleepyBoard)

게시글 조회

  • 내가 Following 한 유저들의 게시글만 불러오기. (최신순)

    요청

    • GET /board 로 요청

    응답

    • 성공 (200)
    [
        {
            "id": 2,
            "nickname": "stouter",
            "content": "너무 좋아요",
            "category": "fishing",
            "created_at": "2022-11-23T13:57:44.356Z"
        },
        {
            "id": 1,
            "nickname": "stouter",
            "content": "너무 좋아요",
            "category": "lifencut",
            "created_at": "2022-11-23T13:49:51.475Z"
        }
    ]
    [] // 팔로잉 유저 없음 || 팔로잉 유저들 게시글 없음

게시글 작성

  • 게임 혹은 서비스 중 공유하기 버튼으로 요청

    요청

    • POST /boardarticleData 와 함께 요청
    {
    	articleData : {
    		content : string,
    		category : string // ("fishing" | "lifencut")
    	}
    }

    응답

    • 성공 (200)
    "글 작성 성공"
    • 실패 (400)
    {
        "statusCode": 400,
        "message": [
            "content must be shorter than or equal to 36 characters",
            "content must be a string",
            "content should not be empty",
            "category must be shorter than or equal to 36 characters",
            "category must be a string",
            "category should not be empty"
        ],
        "error": "Bad Request"
    }

게시글 삭제

  • 내가 작성한 글만 삭제 가능

    요청

    • DELETE /board/{articleId}

    응답

    • 성공 (200)
    // 내 게시글일 때
    "삭제처리 되었습니다."
    • 실패 (401)
    { // 내 게시글이 아닐 때,
        "statusCode": 401,
        "message": "삭제 권한이 없습니다.",
        "error": "Unauthorized"
    }

게시글 좋아요

  • 게시글에 좋아요 버튼으로 API 요청

    요청

    • PUT /board/like/{articleId}

    응답

    • 성공 (200)
    "좋아요 성공"
    • 실패
    // 이미 좋아요 눌렀을 때,
    {
        "statusCode": 406,
        "message": "이미 좋아요를 누르셨습니다.",
        "error": "Not Acceptable"
    }
    // 없는 게시글을 좋아요 눌렀을 때,
    {
        "statusCode": 404,
        "message": "해당하는 게시글이 없습니다.",
        "error": "Not Found"
    }

게시글에 좋아요 취소

  • 게시글에 좋아요 해체 버튼으로 API 요청

    요청

    • DELETE /board/like/{articleId}

    응답

    • 성공 (200)
    "좋아요 취소 성공"
    • 실패
    // 이미 좋아요 눌렀을 때, 없는 게시글의 좋아요를 취소할 때
    {
        "statusCode": 406,
        "message": "이미 처리되었습니다.",
        "error": "Not Acceptable"
    }

🎮 Interface

  • [PATCH] 캐릭터 변경
  • [PATCH] 닉네임 변경
  • [GET] 친구 목록 조회
  • [DELETE] 친구 삭제
Clone this wiki locally