Skip to content

API 명세서

JeeIn Lee edited this page Jul 21, 2023 · 6 revisions

로그인

기능 HTTP Method URL
로그인 POST /api/login
Access Token 재발급 POST /api/auth/reissue-access-token
회원 가입 POST /api/signup
로그인

FE → BE로 넘길 파라미터

{
  "email": "[email protected]",
  "password": "1234"
}

BE → FE : 로그인 성공 시

{
	"statusCode": 200,
	"message":{
		"accessToken": "Access Token",
		"refreshToken": "Refresh Token"
	}
}

BE → FE : 로그인 실패 시

{
	"statusCode": 401,
	data": "비밀번호가 일치하지 않거나 없는 회원입니다."
}
Access Token 재발급

FE → BE

{
  "refreshToken": "Refresh Token"
}

BE → FE : 재발급 성공 시

{
	"statusCode": 200,
	"message":{
		"accessToken": "Access Token",
		"refreshToken": "Refresh Token"
	}
}

BE → FE : Refresh 토큰 형식 잘못됐을 때

{
	"statusCode": 401,
	"message":{
		"exceptionType": "MALFORMED_JWT_EXCEPTION",
		"message": "잘못된 형식의 토큰입니다."
	}
}

BE → FE : Refresh 토큰 기한 만료됐을 때

{
	"statusCode": 401,
	"message":{
		"exceptionType": "EXPIRED_JWT_EXCEPTION",
		"message": "기한이 만료되었습니다."
	}
}
회원 가입

FE → BE

{
	"email": "이메일",
	"password": "비밀번호"
}

BE → FE : 회원가입 성공

{
	"statusCode": 200
}

BE → FE : 회원가입 실패

{
	"statusCode": 400,
	"data": "해당 이메일은 이미 가입된 이메일 입니다. : [email protected]"
}

카드

기능 HTTP Method URL
컬럼/카드 목록 불러오기 POST /api/columns
카드 등록 POST /api/columns/{columnId}/cards
카드 제목/내용 수정 POST /api/cards/{cardId}
카드 위치 변경 POST /api/columns/{columnId}/cards/{cardId}
카드 삭제 POST /api/columns/{columnId}/cards/{cardId}
컬럼/카드 목록 조회

요청시 헤더

  • Authorization: Bearer {accessToken}

BE → FE

{
    "statusCode": 200,
    "data": [
        {
            "columnId": 1,
            "columnTitle": "해야할 일",
            "cards": [
                {
                    "id": 1,
                    "title": "GitHub 공부하기",
                    "content": "stash 개념 학습하기"
                },
                {
                    "id": 2,
                    "title": "스터디 발표 준비",
                    "content": "데이터베이스 파티셔닝 자료 조사"
                }
            ]
        },
        {
            "columnId": 2,
            "columnTitle": "하고 있는 일",
            "cards": [
                {
                    "id": 3,
                    "title": "알고리즘 문제 풀기",
                    "content": "백준 14712, 15662번 풀기"
                },
                {
                    "id": 5,
                    "title": "AWS 공부하기",
                    "content": "EC2, RDS 개념 학습"
                },
                {
                    "id": 7,
                    "title": "WAS 미션 2단계 수행",
                    "content": "세션 구현하기"
                },
                {
                    "id": 8,
                    "title": "JWT 공부하기",
                    "content": "JWT 개념 및 장단점 학습하기"
                }
            ]
        },
        {
            "columnId": 3,
            "columnTitle": "완료한 일",
            "cards": [
                {
                    "id": 6,
                    "title": "React 공부하기",
                    "content": "상태 관리 학습하기"
                },
                {
                    "id": 9,
                    "title": "WAS 미션 1단계 수행",
                    "content": "POST로 회원가입 구현하기"
                },
                {
                    "id": 10,
                    "title": "Redis 공부하기",
                    "content": "Redis 개념 및 설정 방법 학습하기"
                },
                {
                    "id": 11,
                    "title": "Kafka 공부하기",
                    "content": "Kafka 메시지 개념 학습하기" 
                },
                {
                    "id": 12,
                    "title": "DDD 공부하기",
                    "content": "DDD 어그리거트에 대해 학습하기"
                }
            ]
        }
    ]
}
카드 등록

FE → BE Parameter

  • columnId는 @PathVariable
{
	"title": "카드 제목",
	"content": "카드 내용"
}

반환 값

{
    "statusCode": 201,
    "data": {
        "id": 14,
        "title": "팀 프로젝트 API 명세 작성 4",
        "content": "프론트쪽에 알려줄 API 명세서 작성하기 4"
    }
}
  • 반환 코드는 201로 반환
카드 제목/내용 수정

FE → BE Parameter

{
	"id": 1,
	"title": "수정한 카드 제목",
	"content": "수정한 카드 내용"
}

[https://papababo.tistory.com/entry/HTTP-METHOD-PUT-vs-PATCH-차이점](https://papababo.tistory.com/entry/HTTP-METHOD-PUT-vs-PATCH-%EC%B0%A8%EC%9D%B4%EC%A0%90)

  • 제목, 내용 중 하나만 수정해도 제목, 내용 다 보내주기

BE → FE

  • 200 OK
{
	"statusCode": 200
	"data": {
		"id": 1,
		"title": "수정한 카드 제목",
		"content": "수정한 카드 내용"
	}
}
카드 위치 변경

FE → BE Parameter

  • prev_tdl_card_id 는 현재 카드의 위에 있는 카드의 id
  • fromColumnIdtoColumnId 가 동일하면 prev_tdl_card_id 만 변경.
  • 카드 위치가 맨 위이면 prev_tdl_card_id는 0이 넘어온다.

카드 이동 1

{
	"id": 3, // 이동한 카드의 아이디
	"cardTitle" : "title",
	"previousCardId": 2, // 이전 카드의 id
	"nextCardId": 5,  // 다음 카드의 id
	"toColumnId": 2,  // 수정된 컬럼 아이디
	"previousColumnTitle": "해야 할 일",
	"currentColumnTitle": "완료 한 일"
}
  • toColumnId 가 변경된 게 없으면 컬럼 내에서 이동한 것

카드 이동 2 : 맨 앞으로 이동할 경우

{
	"id": 3, // 이동한 카드의 아이디
	"previousCardId": 2, // 이전 카드의 가중치 값
	"nextCardId": 5,  // 다음 카드의 가중치 값 
	"toColumnId": 2,  // 수정된 컬럼 아이디, title 필요, 프론트와 협의 필요
	"previousColumnTitle": "해야 할 일",
	"currentColumnTitle": "완료 한 일"
}

카드 이동 3 : 맨 뒤로 이동할 경우

{
	"id": 3, // 이동한 카드의 아이디
	"previousCardId": 2, // 이전 카드의 가중치 값
	"nextCardId": 5,  // 다음 카드의 가중치 값 
	"toColumnId": 2,  // 수정된 컬럼 아이디, title 필요, 프론트와 협의 필요
	"previousColumnTitle": "해야 할 일",
	"currentColumnTitle": "완료 한 일"
}

카드 이동 4 : 컬럼 내에서 이동할 경우

{
	"id": 3, // 이동한 카드의 아이디
	"previousCardId": 2, // 이전 카드의 가중치 값
	"nextCardId": 5,  // 다음 카드의 가중치 값 
	"toColumnId": 1,  // 수정된 컬럼 아이디, title 필요, 프론트와 협의 필요
	"previousColumnTitle": "해야 할 일",
	"currentColumnTitle": "해야 할 일"
}
id=1
value=1000

id=2
value=2000

id=3
value=3000

BE → FE 응답은 어떻게?

  • 이동 후 카드의 위치를 보내준다
{
	"id": 1
}
카드 삭제

히스토리

기능 HTTP Method URL
활동 로그 목록 조회 GET /api/histories?historyId={historyId}&count={count}
활동 로그 전체 삭제 DELETE /api/histories
활동 로그 목록 조회

반환될 JSON

{
    "statusCode": 200,
    "message": {
        "histories": [
            {
                "id": 48,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T17:29:55"
            },
            {
                "id": 47,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T16:37:27"
            },
            {
                "id": 46,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T16:37:26"
            },
            {
                "id": 45,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T16:26:44"
            },
            {
                "id": 44,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T16:26:43"
            },
            {
                "id": 43,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T16:21:42"
            },
            {
                "id": 42,
                "action": "MOVE",
                "cardTitle": "카드",
                "previousColumnTitle": "제목2",
                "currentColumnTitle": "제목1",
                "actionDatetime": "2023-07-13T16:21:41"
            },
            {
                "id": 41,
                "action": "MODIFY",
                "cardTitle": "카드",
                "actionDatetime": "2023-07-13T16:21:39"
            },
            {
                "id": 40,
                "action": "DELETE",
                "cardTitle": "카드",
                "actionDatetime": "2023-07-13T16:06:33"
            },
            {
                "id": 39,
                "action": "CREATE",
                "cardTitle": "카드",
                "actionDateTime": "2023-07-13T16:06:32"
            }
        ],
        "hasNext": true
    }
}
  • /api/histories?historyId={historyId}&count={count}
    • count: 한번에 불러올 로그 개수
활동 로그 전체 삭제