API 명세서 - boostcampwm-2021/WEB25-JustUs GitHub Wiki

사용자

  • 로그인 : POST
    • URL : /api/users/login
    • body
      • id
    • return
      • status code(성공: 200, 실패: 400)
  • 사용자 정보 조회 : GET
    • URL: /api/users/{usedId}
    • return
      • 이미지
      • 닉네임
  • 정보 수정: PUT
    • 인가 필요
      • 인증 실패시 401 에러 리턴
      • 인증 성공시 아래 요청 수행
    • URL : /api/users
    • body
      • userId
      • 이미지
      • 닉네임
    • return
      • status code(성공:200, 실패 400)
  • 로그 아웃: POST
    • 인가필요
    • URL : /api/users/logout
    • body
      • userId
  • 그룹 순서 수정 : PUT
    • 인가필요
    • URL : /api/users/groups
    • body
      • 그룹ID
      • 바뀐 인덱스
    • return
      • status code (성공 200,실패 400)
  • 사용자가 속한 그룹 리스트 조회(페이징) : GET
    • 인가 필요
    • URL : /api/users/{userId}/groups?limit={limit}&offset={offset}
    • return
      • 사용자가 속해있는 그룹 리스트 ( 순서 보장 되어야 함)
      • [{ groupId, groupName, groupImg }, ... ]
        • 특징
          • 오프셋 == 클라이언트 측에서 현재 가지고 있는 사이즈
          • 오프셋 기반 페이지네이션 사용하기

그룹

  • 그룹 정보 조회 : GET
    • 인가 필요
    • URL : /api/groups/{groupId}
    • return:
      • 그룹 멤버 리스트
      • 그룹 초대 코드
  • 그룹 생성 : POST
    • 인가 필요
    • URL : /api/groups
    • body
      • groupImage: 그룹 이미지(선택 , 없을 시 NULL)
      • groupName: 그룹명(필수)
    • return
      • status code(성공: 200, 실패: 400)
    • 특징
      • 계정 부분의 그룹 순서 수정 도 수행
      • 그룹을 처음 생성하면 →
        1. 프론트에 바로 맨 위 li로 렌더링
        2. 백엔드: 우선순위: 가장 크게 넣어주고
  • 그룹 정보 수정 : PUT
    • URL : /api/groups
    • body
      • groupId
      • groupImage: 그룹 이미지(선택 , 없을 시 NULL)
      • groupName: 그룹명(필수)
    • return
      • status code(성공:200,실패:400)
  • 그룹 탈퇴 : DELETE
    • URL : /api/groups
    • body
      • group id
    • return
      • status code
    • 특징
      • 해당 회원의 그룹 순서 수정 도 수행
      • 그룹원이 0명이 되는 그룹 삭제
  • 그룹 초대 가입 : POST
    • URL : /api/groups/join
    • body
      • 그룹초대코드
    • return
      • status code(성공:200 , 실패 400)
    • 특징
      • 계정 부분의 그룹 순서 수정 도 수행
  • 앨범 전체 조회 : GET ⭐️
    • URL : /api/groups/{groupId}/albums
    • result : [ album : [{ postTitle, postDate, postLocation }, ...], album... ]

앨범

  • 앨범 생성 : POST
    • URL : /api/groups/{groupId}/albums
    • body
      • albumName
    • return
      • status code
      • 추가된 앨범
  • 앨범 이름 수정 : PUT
    • URL : /api/albums/{albumID}
    • body
      • albumName
    • return
      • status code
  • 앨범 삭제 : DELETE
    • URL : /api/albums/{albumID}
    • return
      • status code
    • 특징
      • 포스트 delete cascade 처리

포스트

  • 포스트 생성: POST
    • URL : /api/albums/{albumId}/posts
    • body
      • title
      • content
      • img 배열
      • userId
      • addressInfo
    • return
      • status code
  • 포스트 삭제 : DELETE
    • URL : /api/posts/{postId}
    • return
      • status code
  • 포스트 수정 : PUT
    • URL : /api/posts/{postId}
    • body
      • postTitle
      • postContent
      • postImages
      • postDate
      • postLocation
    • return
      • status code
  • 포스트 상세 조회 : GET
    • URL : /api/posts/{postId}
    • return
      • postTitle
      • postContent
      • postImagesPath
      • postDate
      • postLocation
  • 포스트 검색(페이징) : GET
    • URL : /api/posts/search?q={keyword}&cursor={cursor}&limit={limit}
    • return
      • [ post : { postTitle, postContent, postImagesPath, postDate, postLocation },...]←시간 순?
    • 특징
      • 커서 기반 페이지네이션