Skip to content

API 명세 내용

Kwon soon won edited this page Nov 23, 2020 · 8 revisions

API 전체 개요

인증

  • 로그인
    • POST /api/auth/login
      • body : {id, pw}
  • 로그아웃
    • POST /api/auth/logout
  • 회원가입
    • POST /api/auth/signup
      • body : {id, pw, email, ...}

middleware

  • 인증 middleware
  • 권한 검증 middleware

유저

  • 전체 유저 조회
    • GET /api/users
  • 특정 유저 조회(유저 상세정보)
    • GET /api/users/{userId}
  • 특정 유저 수정
    • POST /api/users/{userId}
      • body : {수정할 유저 값}
  • 특정 유저 삭제(회원 탈퇴)
    • DELETE /api/users/{userId}
  • 마지막 채널 갱신
    • POST /api/users/{userId}/last-channel
      • body : { channelId }

채널

  • 모든 채널 조회
    • GET /api/channels
  • 채널 추가
    • POST /api/channels
      • body : {채널 정보 - 채널 테이블 참고}
  • 특정 채널 정보 조회
    • GET /api/channels/{channelId}
  • 특정 채널에 특정 유저 초대
    • POST /api/channels/{channelId}/invite
      • body : {userId} -> private일 때, 내가 초대 권한이 있는가! 검증
  • 특정 채널 수정 (이름 변경)
    • POST /api/channels/{channelId}
      • body : {title}
        • 권한 검증
  • 특정 채널 삭제
    • DELETE /api/channels/{channelId} - 권한 검증(이 채널의 adminId 인지)

쓰레드

  • 쓰레드 생성하기
    • POST /api/threads
      • body : {생성 쓰레드 정보}
      • 권한 검증
  • 특정 쓰레드 조회 (해당 쓰레드 컨텐츠 + 댓글 조회)
    • GET /api/threads/{threadId}
      • { thread : {subThreads: [], ...} }
  • 특정 쓰레드 수정
    • POST api/threads/{threadId}
      • body : {업데이트한 쓰레드 정보}
      • 권한 검증
  • 특정 쓰레드 삭제
    • DELETE /api/threads/{threadId}
      • 권한 검증
  • 특정 채널에 속한 스레드 모두 불러오기
    • GET /api/threads/channels/{channelId}
      • 권한 검증
  • 특정 쓰레드에 핀 추가
    • POST /api/threads/{threadId}/pin

TODO🚨🚨

이메일 검증 API

이모지 (선택사항)

  • 전체 이모지 조회 GET /api/emojis

유저 전체 목록 조회

request

GET /api/users

response

  • status : 200
{
    users : [
        {
            id: number, 
            email: string, 
            image: string,
            displayName: string,
            phoneNumber: string | null
        },
    ]
}

특정 유저 조회

request

GET /api/users/:userId

response

  • status : 200
{
    user : {
        id: number, 
        email: string, 
        image: string,
        displayName: string,
        phoneNumber: string | null,
    }
},

특정 유저 정보 수정

request

POST /api/users/:userId

Body

{
    user : {
        image: string,
        displayName: string,
        phoneNumber: string | null,
    }
}

response

  • status: 200

특정 유저 삭제 (회원 탈퇴)

request

DELETE /api/users/:userId

response

  • status: 200

마지막 채널 갱신

request

POST /api/users/{userId}/last-channel

body

{ 
    channelId: number
}

response

  • status: 200

로그인

request

POST /api/auth/login

body

{
    email: string,
    pw: string
}

response

  • status: 200

로그아웃

request

POST /api/auth/logout

response

  • status: 200

회원가입

request

POST /api/auth/signup

body

{
    email: string,
    pw: string,
    image: string | null,
    displayName: string,
    phoneNumber: string | null,
    
}

response

  • status: 201

--

모든 채널 조회

request

GET /api/channels

response

  • status: 200
{
    channels:[
        {
            id: number,
            ownerId: number,
            name: string,
            channelType: number,
            isPublic: number,
            memberCount: number,
            description: string | null,
        }
    ]
}

채널 추가

request

POST /api/channels

body

{
    name: string,
    channelType: number,
    isPublic: number,
    description: string | null,
}

response

  • status: 201

특정 채널 정보 조회

request

GET /api/channels/:channelId

response

{
    channel : {
          id: number,
          ownerId: number,
          name: string,
          channelType: string,
          isPublic: number,
          isDelete: number,
          memberCount: number,
          description: string | null,
          created_at: string,
          updated_at: string   
        }
}

특정 채널에 특정 유저 초대

🚨권한 검증🚨

request

POST /api/channels/:channelId/invite

body

{
    userId: number
}

response

  • status : 200

특정 채널 수정 (이름 변경)

🚨권한 검증🚨

request

POST /api/channels/:channeldId

body

{
    title: string,
}

response

  • status: 200

특정 채널 삭제

🚨권한 검증🚨

request

DELETE /api/channels/:channelId

response

  • status: 200

쓰레드

  • 쓰레드 생성하기
    • POST /api/threads
      • body : {생성 쓰레드 정보}
      • 권한 검증
  • 특정 쓰레드 조회 (해당 쓰레드 컨텐츠 + 댓글 조회)
    • GET /api/threads/{threadId}
      • { thread : {subThreads: [], ...} }
  • 특정 쓰레드 수정
    • POST api/threads/{threadId}
      • body : {업데이트한 쓰레드 정보}
      • 권한 검증
  • 특정 쓰레드 삭제
    • DELETE /api/threads/{threadId}
      • 권한 검증
  • 특정 채널에 속한 스레드 모두 불러오기
    • GET /api/threads/channels/{channelId}
      • 권한 검증
  • 특정 쓰레드에 핀 추가
    • POST /api/threads/{threadId}/pin

쓰레드 생성하기

🚨권한 검증🚨

request

POST /api/threads

body

{
    thread: {
        userId: number,
        channelId: number,
        content: string,
        parentId: number | null,
    }
}

response

  • status: 201

특정 쓰레드 조회

request

GET /api/threads/:threadId

response

{
    thread : {
        id: number,
        userId: number,
        channelId: number,
        content: string,
        url: string,
        isPinned: number,
        subThreads: [
            {    
                id: number,
                userId: number,
                channelId: number,
                content: string,
                url: string,
                isPinned: number
            },
            ...
        ]
    }
}

특정 쓰레드 수정

🚨권한 검증🚨

request

POST /api/threads/{threadId}

body

{
    content: string
}

response

  • status 200

특정 쓰레드 삭제

🚨권한 검증🚨

request

DELETE /api/threads/{threadId}

response

  • status 200

특정 채널에 속한 스레드 모두 불러오기

request

GET /api/threads/channels/{channelId}

response

  • status 200
{
    threads : [
        {
            id: number,
            userId: number,
            channelId: number,
            content: string,
            url: string,
            isPinned: number,
            subThread: [
                {    
                    id: number,
                    userId: number,
                    channelId: number,
                    content: string,
                    url: string,
                    isPinned: number
                }, ...
            ]
        }, ...
    ]
}

특정 쓰레드에 핀 추가

request

POST /api/threads/{threadId}/pin

response

  • status 200
Clone this wiki locally