API Host는 https://kdt.frontend.5th.programmers.co.kr 입니다.
API 사용에 문제가 있다면 문의바랍니다.
주의할 점으로 API에 예외 처리가 안되어있는 경우가 있습니다. 이 경우 프론트엔드에서 Form Validation을 해주시면 됩니다.
응답이 모델로 되어있는 경우 하단 모델 안내를 확인해주세요.
Optional으로 적혀있는 경우 값을 넣지 않아도 동작하는 필드입니다.
Nullable으로 적혀있는 경우 null이 내려올 수 있는 필드입니다.
[]는 리스트 타입입니다.
API URL에 중괄호로 감싸져 있는 부분은 Path Variable 입니다.
API에 추가적인 데이터가 필요한 경우
해당 서버는 많은 팀이 사용 중이기 때문에 각각 커스터마이징을 해드릴 수는 없습니다. 대신 API 서버의 데이터베이스로 MongoDB를 사용하고 있고 대부분의 필드는 String으로 구성이 되어있기 때문에 필드에 사용자 정의 JSON 값을 넣어서 처리하는 방법을 사용할 수 있습니다.
예를 들어, Post 모델에 제목과 내용을 분리하고 싶다면 title 필드에 사용자 정의 JSON을 String으로 변환하여 넣을 수 있습니다. 이를 간단한 의사 코드로 표현하자면 다음과 같습니다.
어드민
각 서버에 어드민 계정이 따로 있고, 공통적으로 다음 계정으로 생성됩니다.
포스트를 남기기 위해서는 채널이 필요하기 때문에 채널 생성이 필요합니다.
채널 추가는 어드민 계정으로 가능하고 다음과 같이 요청을 보낼 수 있습니다.
POST /channels/create
Request Body
인증
로그인
사용자가 이메일과 비밀번호로 서비스에 로그인합니다.
POST /login
Request Body
Response
200 OK
회원가입
사용자가 이메일과 비밀번호로 서비스에 가입합니다.
POST /signup
Request Body
Response
200 OK
로그아웃
사용자가 로그아웃 합니다.
POST /logout
인증 확인
사용자가 인증이 되었는지 확인합니다.
GET /auth-user
Request Header
Response
사용자
사용자 목록
사용자 목록을 불러옵니다.
GET /users/get-users
Request Params
Response
현재 접속 중인 사용자 목록
현재 접속 중인 사용자 목록을 불러옵니다.
GET /users/online-users
Response
사용자 정보
특정 사용자 정보를 불러옵니다.
GET /users/{userId}
Response
프로필 이미지 변경
나의 프로필 이미지를 변경합니다.
POST /users/upload-photo
Request Header
Request Body
FormData
isCover를 반드시 false로 넣어야 합니다.
Response
커버 이미지 변경
나의 커버 이미지를 변경합니다.
POST /users/upload-photo
Request Header
Request Body
FormData
isCover를 반드시 true로 넣어야 합니다.
Response
설정
내 정보 변경
나의 정보를 변경합니다.
PUT /settings/update-user
Request Header
Request Body
Response
비밀번호 변경
내 계정 비밀번호를 변경합니다.
PUT /settings/update-password
Request Header
Request Body
채널
채널 목록
채널 목록을 불러옵니다.
GET /channels
Response
채널 정보
특정 채널 정보를 불러옵니다.(채널 이름이 한글일 때, 인코딩 필요)
GET /channel/{channelName}
Response
포스트
특정 채널의 포스트 목록
특정 채널의 포스트 목록을 불러옵니다.
GET /posts/channel/{channelId}
Request Params
Response
특정 사용자의 포스트 목록
특정 사용자의 포스트 목록을 불러옵니다.
GET /posts/author/{authorId}
Request Params
Response
특정 채널에 포스트 작성하기
특정 채널에 포스트를 작성합니다.
POST /posts/create
Request Body
FormData
Request Header
특정 포스트 상세 보기
특정 포스트의 정보를 불러옵니다.
GET /posts/{postId}
Response
내가 작성한 포스트 수정하기
내가 작성한 포스트를 수정합니다.
PUT /posts/update
Request Header
Request Body
FormData
이미지를 삭제하려면 imageToDeletePublicId에 imagePublicId를 넣어주세요.
내가 작성한 포스트 삭제하기
내가 작성한 포스트를 삭제합니다.
DELETE /posts/delete
Request Header
Request Body
좋아요
특정 포스트 좋아요
특정 포스트에 좋아요합니다.
POST /likes/create
Request Header
Request Body
Response
특정 포스트 좋아요 취소
특정 포스트에 좋아요한 것을 취소합니다.
DELETE /likes/delete
Request Header
Request Body
←좋아요 객체에 대한 id임…
Response
댓글
특정 포스트에 댓글 달기
특정 포스트에 댓글을 작성합니다.
POST /comments/create
Request Header
Request Body
Response
특정 포스트에 작성한 내 댓글 지우기
특정 포스트에 작성한 내 댓글을 삭제합니다.
DELETE /comments/delete
Request Header
Request Body
Response
알림
검색
사용자 검색
사용자를 검색합니다.
GET /search/users/{query}
Response
전체 검색 (포스트, 사용자)
포스트와 사용자를 검색합니다.
GET /search/all/{query}
Response
나의 알림 목록
나의 알림 목록을 불러옵니다.
GET /notifications
Request Header
Response
알림 확인 처리
나에게 온 알림을 읽음처리 합니다.
PUT /notifications/seen
Request Header
알림 생성
상대방에게 알림을 보냅니다.
POST /notifications/create
원래는 서버에서 해주는게 맞는 작업이지만 API 호출로 알림을 보낼 수 있도록 작성했습니다.
{
"_id": String,
"user": String, // 사용자 id
"post": String, // 포스트 id
"createdAt": String,
"updatedAt": String
}
{
"_id": String,
"comment": String,
"author": User,
"post": String, // 포스트 id
"createdAt": String,
"updatedAt": String
}
{
"seen": Boolean,
"_id": String,
"author": User,
"user": User | String,
"post": Nullable<String>, // 포스트 id
"follow": Optional<String>, // 사용자 id
"comment": Optional<Comment>,
"message": Optional<String>, // 메시지 id
"createdAt": String,
"updatedAt": String
}
{
"_id": String,
"user": String, // 사용자 id
"follower": String, // 사용자 id
"createdAt": String,
"updatedAt": String
}