✅ 미팅 생성 API 스펙 만들기 – 쉽게 이해하는 실전 예시
1. 🎯 목표: "미팅 생성" API 스펙 정의 및 더미 응답 제공
- 프론트엔드가 빠르게 연동할 수 있도록 먼저 API 스펙 + 더미 응답부터 만듭니다.
- 실무에서는 구현보다 스펙 정의가 먼저입니다.
- 빠른 협업, 테스트 가능, 예측 가능한 결과 확보!
✅ API 스펙이란?
API 스펙은 컴퓨터끼리 “어떻게 대화할지” 정해놓은 약속표예요.
마치 이런 거예요:
🧑💻 “나 이 주소로 POST 요청 보낼게요. 대신 이런 형식으로 주세요!”
🖥️ “좋아요, 그럼 이런 JSON을 줄게요!”
📦 예시: 미팅 생성 API
- 주소(URL): POST /meetings
- 요청(Request): 아무것도 안 보내도 돼요
- 응답(Response): 이렇게 돌아와요
{
"url_code": "abc123"
}
✨ 왜 중요해요?
- 프론트엔드 개발자는 이 약속만 보고 화면 개발을 미리 시작할 수 있어요.
- 백엔드 개발자는 실제 동작은 나중에 만들면 돼요.
2. 🧱 예시 상황: "미팅방 만들기 버튼"
사용자가 "미팅 만들기" 버튼을 누르면,
새로운 미팅이 생성되고, 접속할 수 있는 URL 코드가 생성돼요.
3. 🔧 실제 API 스펙 코드 예시 (FastAPI)
📄 응답 DTO 정의
from pydantic import BaseModel
class CreateMeetingResponse(BaseModel):
url_code: str # 미팅 고유 코드
📄 API 라우터 구성
from fastapi import APIRouter
from app.dtos.create_meeting_response import CreateMeetingResponse
router = APIRouter(prefix="/meetings", tags=["Meeting"])
@router.post("", response_model=CreateMeetingResponse)
async def create_meeting():
return CreateMeetingResponse(url_code="abc123")
📄 FastAPI 앱에 등록
from fastapi import FastAPI
from app.apis.meeting_router import router as meeting_router
app = FastAPI()
app.include_router(meeting_router)
📄 실행 파일
from app import app
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
4. 🧪 Swagger UI로 확인하기
- 서버 실행: python asgi.py
- 브라우저 접속: http://localhost:8000/docs
- 화면에서 확인 가능:
- POST /meetings API 항목이 생성됨
- 응답 예시:
- { "url_code": "abc123" }
- "Try it out" → "Execute"로 테스트 가능
5. 📌 쉽게 이해하기 위한 비유
🧾 마치 커피숍에서 주문만 했는데 "진짜 커피"는 나중에 오고,
일단 "주문번호 영수증"만 먼저 받은 상황!
- 백엔드는 커피를 아직 안 만들었지만,
- 프론트는 그 주문번호로 화면을 먼저 설계할 수 있어요.
✅ 요약 정리
항목 설명
목적 | 미팅 생성 API 스펙 + 더미 응답 정의 |
사용 이유 | 프론트엔드 개발 속도 ↑, 백엔드 로직 구현 전 테스트 가능 |
Swagger | 자동 문서화 + 테스트 도구 제공 |
예시 응답 | { "url_code": "abc123" } |
🧠 실무 팁
- 먼저 DTO를 명확히 정의하면 유지보수가 쉬워집니다.
- 스펙 기반 개발은 실무 협업에서 매우 중요합니다.
- Swagger UI는 실시간 문서이자 테스트 툴입니다. 꼭 활용하세요!
필요 시 Base62나 uuid, sqids를 활용한 고유 코드 생성 방식도 함께 연동 가능합니다.
'기술블로그-Fastapi편' 카테고리의 다른 글
✅ FastAPI 함수 리턴 타입 힌트 -> CreateMeetingResponse 완전 정리 (0) | 2025.05.27 |
---|---|
✅ FastAPI/Pydantic 문법 정리: Annotated와 Field 완전 이해하기 (0) | 2025.05.27 |
🔄 DRF Serializer vs FastAPI Pydantic 비교 정리 (0) | 2025.05.26 |
📦 FastAPI에서 Request Body + Pydantic 사용법 (0) | 2025.05.26 |
❓ Query Parameter (쿼리 파라미터)란? (0) | 2025.05.26 |