지난주에는 ERD 설계를 통해 데이터베이스 구조를 설계하며 프로젝트의 데이터를 정의했습니다.
이번 주차에서는 데이터를 활용하기 위한 API 설계를 다룹니다.
API는 단순히 클라이언트와 서버 간의 통신을 위한 도구가 아닙니다.
API 설계는 프로젝트의 기능을 구체화하고, 팀원 간 협업을 원활히 하기 위한 로드맵을 만드는 작업입니다.
1️⃣ 프로젝트의 큰 틀을 잡는 과정
2️⃣ 협업의 가이드라인 제공
3️⃣ 확장성과 유지보수성 확보
1️⃣ API Endpoint 설계
2️⃣ 요청(Request)과 응답(Response) 데이터 설계
API 설계의 결과는 API 명세서라는 형태로 문서화됩니다.
이 명세서는 프론트엔드 개발자와 다른 팀원들이 API를 쉽게 이해하고 활용할 수 있도록 돕는 가이드가 됩니다.
API 명세서는 마치 ERD의 API 버전과도 같습니다.
이번 포스팅에서는 API 설계의 원칙과 실전 활용 방법을 배우고, 이를 바탕으로 프로젝트의 기초를 다집니다.
📌 1. API, HTTP 메소드 배우기
📌 2. RESTful API Endpoint 설계 배우기
📌 3. 세부적인 API 설계 배우기
API 설계 시 필요한 것은 아래와 같습니다:
1️⃣ API Endpoint의 설계
2️⃣ 요청 데이터, 응답 데이터의 설계
위의 정보를 문서화하여 프론트엔드 개발자가 API를 사용하기 쉽게 돕는 문서를 API 명세서라고 부릅니다.
📝 API 명세서는 ERD처럼 개발 초기 단계에서 큰 틀을 설계해야 합니다.
💡 API (Application Programming Interface)
💡 REST API
💡 API Endpoint
/users, /users/{id} 💡 HTTP 메소드
⚠️ 주의: 모든 작업을
POST로 구현 가능하나, RESTful 설계 원칙을 지키려면 적합한 메소드를 선택해야 합니다!
RESTful의 핵심은 "리소스 중심" 설계에 있습니다.
RESTful(Representational State Transfer) 아키텍처 스타일은 HTTP 프로토콜을 기반으로 한 웹 서비스 설계 방식으로, 주로 리소스(Resource)를 중심으로 동작합니다.
즉, RESTful API는 리소스를 URI(Uniform Resource Identifier)로 표현하고, 이를 처리하기 위한 HTTP 메소드를 사용합니다.
API Endpoint 설계는 리소스와 작업을 조합해 사용자가 원하는 기능을 제공하는 경로(URL)를 정의하는 것을 의미합니다.
예를 들어, "게시글의 목록을 조회"하는 API가 필요하다고 가정해 봅시다.
posts)GET)또 다른 예: "특정 사용자의 게시글 목록을 조회"하는 API
posts), 사용자(users)GET)RESTful API의 Endpoint는 아래 규칙에 따라 설계합니다:
1️⃣ URI에 동사를 포함하지 않는다.
/getUsers /users 2️⃣ 단어 구분은 하이픈(-)으로 한다.
/users_list /users-list 3️⃣ 자원(Resource)은 복수형으로 표현한다.
/user /users 4️⃣ 단일 자원을 표현할 경우 식별자(id)를 추가로 사용.
/users/{id} 5️⃣ 자원 간 연관 관계는 URI에 명시한다.
/users/{id}/subjects 💡 Tip: 설계 규칙을 기본적으로 따르되, 프론트엔드 개발자가 이해하기 쉬운 API를 설계하는 것이 가장 중요합니다.
1:1 관계:
/users/{id}/subjects/{subject-id} 1:N 관계:
/users/{id}/subjects N:M 관계:
로그인:
POST /users/login POST https://example.com/users/login회원가입:
POST /users 회원탈퇴 (Soft Delete):
PATCH /users GET /users/articles/{article-id}?로 시작, 여러 값은 &로 연결. GET /users/articles?name=mango&owner=yappi{
"name": "최용욱",
"phoneNum": "010-1111-2222",
"nickName": "ddol"
}Authorization: Bearer <token>
Content-Type: application/jsonAPI 명세서 예시 스크린샷
최종적으로는, SWAGGER을 사용해서 API 명세서를 프론트엔드에게 넘겨주게 되고, 프론트엔드를 이를 확인하면서 협업하게 됩니다.

이번 시간에는 백엔드 설계에서 매우 중요한 API 설계에 대해 배워봤습니다! 다음 포스팅에는 본격적으로 Spring Boot에 대해 배워보면서 실제로 개발을 해볼 준비를 해봅시다!😊