HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🏄‍♂️
[팀8] 어푸(Ah puh) - Surf
/
🏷️
API 설계
🏷️

API 설계

API 설계
도메인
기능
HTTP method
Path
Request / Response
응답 코드
진행상황
담당자
메모
완료
USER
로그인
POST
/users/login
200
완료
완료
USER
로그인
POST
/users/login
200
완료
완료
USER
회원가입
POST
/users
201
완료
완료
USER
개인 정보 수정
PUT
/users
200
완료
완료
USER
회원 정보 조회
GET
/users/{userId}
200
완료
완료
USER
회원 탈퇴
DELETE
/users
204
완료
완료
POST
게시글 등록
POST
/posts
201
완료
완료
POST
게시글 수정
PUT
/posts/{postId}
200
완료
완료
POST
게시글 삭제
DELETE
/posts/{postId}
204
완료
완료
POST
게시글 상세 조회
GET
/posts/{postId}
200
완료
완료
POST
즐겨찾기
POST
/posts/{postId}/favorite
200
완료
완료
POST
즐겨찾기 취소
DELETE
/posts/{postId}/favorite
200
완료
완료
POST
해당년도 게시글 개수 정보 조회
GET
/posts/calendarGraph?year={year}&userId={userId}
200
완료
1. 카드 페이지 버튼 누를 때 - 1년치 한 번에 보냄 2. surfing stat(잔디밭) 🔆조회하려는 userId를 request param으로 추가(잔디밭에서 필요)
완료
POST
일년치 게시글 점수 조회
GET
/posts/score?userId={userId}
200
완료
- 메인페이지 그래프 (카테고리 미 선택시) 타회원 그래프 조회 가능 (userId) 카테고리 선택하면 categoryId로 필터링 1. category id 2. post의 select date 순으로 정렬 🔆응답에서 selectedDate, score → x, y로 수정
완료
POST
한달 전체 게시글 조회
GET
/posts/month?year={year}&month={month}
200
완료
- 카드 페이지에서 카드를 눌렀을 때 ex> URL?year=2016&month=8 - userId는 토큰
완료
POST
전체 게시글 조회
GET
/posts/all?userId={userId}&cursorId={cursorId}
200
완료
- 10개씩 무한 스크롤(커서 페이징)
완료
POST
카테고리별 게시글 전체 조회
GET
/posts?userId={userId}&categoryId={categoryId}&cursorId={cursorId}
200
완료
- 10개씩 무한 스크롤(커서 페이징)
완료
POST
카테고리별 최근 게시글 점수 조회
GET
/recentscore?categoryId={categoryId}
200
완료
기능 분리 - post 생성 위해 (+) 누를 때
완료
POST
최신 전체 게시글 둘러보기
GET
/posts/recent?cursorId={cursorId}
200
완료
- 최신 전체 게시글 10개씩 둘러보기
완료
POST
팔로우 한 사용자 게시글 둘러보기
GET
/follow/posts?cursorId={cursorId}
200
완료
- 팔로우한 사용자 게시글 둘러보기
완료
CATEGORY
카테고리 등록
POST
/categories
201
완료
완료
CATEGORY
카테고리 수정
PUT
/categories/{categoryId}
200
완료
완료
CATEGORY
카테고리 삭제
DELETE
/categories/{categoryId}
204
완료
완료
CATEGORY
카테고리 전체 조회
GET
/categories
200
완료
categoryId, catagoryName 확인 가능
완료
CATEGORY
해당 사용자의 대시보드 정보
GET
/categories/dashboard?userId={userId}
200
완료
완료
완료
FOLLOW
팔로우
POST
/follow
201
완료
완료
FOLLOW
언팔로우
DELETE
/follow/{userId}
204
완료
완료
FOLLOW
특정 사용자의 팔로워 전체 조회
GET
/users/{userId}/followers
200
완료
완료
FOLLOW
특정 사용자가 팔로잉 한 사람 전체 조회
GET
/users/{userId}/following
200
완료
완료
LIKE
게시글 좋아요
POST
/posts/{postId}/like
200
완료
완료
LIKE
게시글 좋아요 취소
DELETE
/posts/{postId}/unlike/{likeId}
204
완료
완료
 
 

Api Response Format

header:{ statusCode: 200 }, body:{ -> 위에 적은 response 형태 "postId": 1, "content": "ahpuh", "score": 100 }
 

Date Format

  • 날짜 & 시간: yyyy-MM-dd HH:mm:ss // 생성날짜, 수정 시간 .. server time 그대로 적용해서 그런거임
  • selectedDate : yyyy-MM-dd // post 쓸떄 날짜 지정했을때 다음 형식으로 request하고, response도 string도
 
GET, DELETE => header에 데이터 포함
POST, PUT => body에 데이터 포함
 

Status Code

  • get, put → 200 ok
  • post → 201 created
    • Location: /posts/{postId} - 리스소가 생성된 위치 (헤더)
  • delete → 200 ok (응답 바디 있을 경우) vs 204 no-content (응답 바디 없을 경우)
 
 
  • 참고해봅시다 https://www.notion.so/backend-devcourse/API-bee4c074598e40d7bcf09905a3c2cf03

참고 글


API Docs
OPENAPI 관련 안내 [ 2021/07/07 OPENAPI 서비스 장애 안내 / OPENAPI Service Disability Information] [Korean] 안녕하세요? 쿠팡입니다. 금일 오전 OPENAPI 를 통한 주문 수집에 문제가 발생하여 아래와 같이 안내드립니다. - OpenAPI 셀러가 오전에 발주서 API 수집시 수취인 안심번호 값이 null 로 표시되는 문제 발생 - 진행시간 : 2021년 7월 7일 04:21 ~ 10:22 KST - 현재는 조치완료되어 정상이용 가능 위 내용 참고하시어 필요시 주문을 재수집해주시기 바랍니다.
API Docs
https://developers.coupangcorp.com/hc/ko/categories/360002105414
백엔드가 이정도는 해줘야 함 - 6. API 스펙 설계와 문서화 방식 결정 - (2)
API 스펙 설계가 끝났으니 이제 프론트엔드 팀에게 전해줄 문서를 작성해야 한다. 이거야 뭐 대충 마크다운같은 걸로 열심히 시간 쏟아서 정리해도 되는 부분이지만, 더 나은 방법이 없을지부터 고민해 보자. 이번 챕터에서는 API 문서화 방식 을 결정한다. 난 처음에 엑셀로 API를 문서화했다. 메소드 URI, 요청 파라미터, 응답 status code별 설명, 응답 body 등등을 컬럼으로 두고 내용을 채웠었다.
백엔드가 이정도는 해줘야 함 - 6. API 스펙 설계와 문서화 방식 결정 - (2)
https://velog.io/@city7310/%EB%B0%B1%EC%97%94%EB%93%9C%EA%B0%80-%EC%9D%B4%EC%A0%95%EB%8F%84%EB%8A%94-%ED%95%B4%EC%A4%98%EC%95%BC-%ED%95%A8-6.-API-%EC%8A%A4%ED%8E%99-%EC%84%A4%EA%B3%84%EC%99%80-%EB%AC%B8%EC%84%9C%ED%99%94-%EB%B0%A9%EC%8B%9D-%EA%B2%B0%EC%A0%95-2
백엔드가 이정도는 해줘야 함 - 6. API 스펙 설계와 문서화 방식 결정 - (2)
REST API 디자인 가이드
조대협(http://bcho.tistory.com) REST API 디자인을 보면, REST 사상에 맞춰서 제대로 디자인 (CRUD를 HTTP method에 맞춘)하기도 어렵고, URI Convention등이나 보안, 버전 관리등 고려할 사항이 많다. 이번 글에서는 REST API를 디자인에 대한 가이드를 소개하고자 한다. URL을 심플하고 직관적으로 만들자 REST API를 URL만 보고도, 직관적으로 이해할 수 있어야 한다URL을 길게 만드는것 보다, 최대 2 depth 정도로 간단하게 만드는 것이 이해하기 편하다.
REST API 디자인 가이드
https://bcho.tistory.com/914
REST API 디자인 가이드
REST API Documentation - CAFE24 REST API
API version: 2021-09-01 (latest) 카페24 쇼핑몰 API는 카페24 쇼핑몰에 연동하여 서비스를 제공하기 위한 앱스토어 입점 개발사, 서드파티 솔루션 제공자 등에 제공하는 API입니다. 카페24 API는 RESTful한 아키텍쳐로서 OAuth 2.0 기반의 인증 시스템과 표준 HTTP Request Method, 리소스를 예측할 수 있는 엔드포인트 URL, HTTP 코드 기반의 에러 메시지를 제공합니다.
REST API Documentation - CAFE24 REST API
https://developer.cafe24.com/docs/api/front/#products
REST API Documentation - CAFE24 REST API

 
API 모델
 

Validation

  • user
    • email
      • maxlength = 254
    • username
      • maxLength = 20
    • password
      • maxLength = 20 → (암화화 되어 들어간 password 길이 == 60자)
      • 숫자, 영문자(대소문자) 포함 8 ~ 20
  • post
    • content
      • maxLength = 500
    • score
      • min = 0, max = 100
  • category
    • name
      • maxLength = 30