개발 효율을 높이는 API 명세서 작성의 5단계 원칙
개발 효율을 높이는 API 명세서 작성의 5단계 원칙
🧐 왜 ‘기능 위주’의 명세서가 위험할까?
이전 프로젝트를 진행하며 API 명세서를 작성했을 때, 단순히 “이런 기능이 필요하니까 이렇게 만들자” 라는 생각으로 기능 구현에만 급급했던 적이 있습니다.
하지만 막상 개발이 시작된 후, 로직을 구현하다 보니 데이터 구조가 맞지 않아 명세서를 수정해야 하는 상황이 빈번했습니다. 개발이 진행된 이후에 명세서를 고치는 것은 단순히 문서 한 줄을 바꾸는 일이 아니라, 이미 짜여진 코드의 흐름을 꼬이게 만드는 위험한 작업임을 체감했습니다.
이전의 경험과 이번 강의를 통해 개발 시작 전 문서화(설계) 가 왜 중요한지, 그리고 어떻게 하면 단계적으로 탄탄한 명세서를 작성할 수 있는지 정리해 보았습니다.
🚀 API 명세서 작성을 위한 5단계 질문
단순히 기능만 생각하여 나열하는 것이 아니라, 다음의 5가지 질문을 순서대로 던지면 훨씬 명확한 명세서를 작성할 수 있습니다.
1. Who (누가 API를 사용하는가?)
- 정의: 이 API를 호출하는 대상이 누구인지 명확히 합니다.
- 이유: 내부 서비스용인지, 외부 파트너사용인지, 혹은 관리자 전용인지에 따라 필요한 보안 인증 방식과 데이터의 상세 수준이 달라집니다.
2. What (무엇을 다룰 것인가?)
- 정의: API가 제어하고자 하는 리소스(Resource)를 정의합니다.
- 이유: “로그인 기능”이 아니라 “사용자(User) 정보” 혹은 “세션(Session)”이라는 리소스로 접근해야 RESTful한 설계가 가능해집니다.
3. How (어떻게 하는가?)
- 정의 : HTTP Method와 Endpoint(URI) 구조를 설계합니다.
- 원칙 :
GET: 리소스 조회POST: 리소스 생성PUT/PATCH: 리소스 수정DELETE: 리소스 삭제
4. Parameters (무엇이 필요한가?)
- 정의: 요청 시 필요한 모든 데이터를 정의합니다. (Header, Body, Query String 등)
- 상세: 각 파라미터의 데이터 타입, 필수 여부, 제약 조건을 명시합니다.
5. Returns (무엇을 반환하는가?)
- 정의: 작업 결과로 반환될 응답 데이터와 HTTP 상태 코드를 정의합니다.
- 핵심: 성공(
200,201)뿐만 아니라, 예상되는 실패 상황(400,401,404등)의 에러 응답 구조도 반드시 포함해야 합니다.
💻 실전 응용 예시: 게시글 생성 API
배운 내용을 바탕으로 간단한 게시글 작성 API 명세를 시뮬레이션해 보았습니다.
- Who : 로그인한 커뮤니티 사용자
- What : 게시글(Post)
- How :
POST /api/v1/posts - Parameters :
Authorization:Bearer {token}(Header, 필수)title: 제목 (Body, String, 필수, 최대 50자)content: 본문 (Body, String, 필수)
- Returns :
- Success (201 Created) : 생성된 게시글의 ID 및 생성 시간 반환
- Fail (400 Bad Request) : 제목 누락 등 유효성 검사 실패 메시지
1
2
3
4
5
6
7
8
// Response Body Example (Success)
{
"status": "success",
"data": {
"postId": 1024,
"createdAt": "2026-03-09T17:00:00Z"
}
}
🧠 회고 및 느낀 점
🔍 앞으로의 다짐
- 사용자 중심 사고 : “내가 만들기 편한 API”가 아니라 “사용자(프론트엔드 개발자 등)가 쓰기 편한 API”인지를 먼저 고민하겠습니다.
- 에러 케이스 상세화 : 성공 응답만큼이나 실패 응답을 상세히 정의하여, 트러블슈팅 시간을 단축할 수 있는 명세서를 작성하겠습니다.
Tip : 명세서는 한 번 쓰고 끝나는 것이 아니라, 개발 팀원과의 소통 도구입니다. 이 5단계 원칙을 습관화하여 ‘꼬이지 않는 개발’을 지향해 봅시다!
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.