좋은 API란 무엇인가? REST API 설계 원칙과 성숙도 모델 완벽 가이드
1. 서론: 왜 모두가 'REST'를 외칠까? 현대 소프트웨어 아키텍처는 수많은 서비스가 서로 데이터를 주고받으며 작동합니다. 이때 서로 다른 환경(언어, 프레임워크)에서도 막힘없이 대화하기 위한 약속이 필요한데, 그중 가장 널리 쓰이는 표준이 바로 **REST(Representational State Transfer)**입니다. 하지만 단순히 HTTP를 쓴다고 해서 모두 RESTful한 것은 아닙니다. 오늘은 진정한 의미의 REST API가 무엇인지, 그리고 어떻게 설계해야 하는지 깊이 있게 알아보겠습니다. 2. REST API의 6가지 기본 원칙 REST 아키텍처를 유지하기 위해서는 다음의 제약 조건을 준수해야 합니다. Client-Server 구조: 서버와 클라이언트의 역할을 명확히 분리하여 독립적인 진화를 가능하게 합니다. Stateless (무상태성): 서버는 클라이언트의 상태를 기억하지 않습니다. 각 요청은 처리에 필요한 모든 정보를 포함해야 합니다. Cacheable (캐시 가능): HTTP의 기존 웹 표준을 그대로 활용하여 응답을 캐싱할 수 있어야 합니다. Uniform Interface (일관된 인터페이스): 리소스(URL)와 행위(HTTP Method)가 표준화되어야 합니다. Layered System (계층화 시스템): 클라이언트는 서버가 직접 연결되었는지, 중간 매개체(로드밸런서 등)를 거쳤는지 알 수 없어야 합니다. Code on Demand (선택 사항): 서버가 클라이언트에 실행 가능한 코드를 전달할 수 있습니다. 3. 핵심 설계 가이드: 리소스와 행위의 분리 가장 많은 개발자가 실수하는 부분이 URL 설계입니다. Bad: GET /get_user_info/123 , POST /delete_post (행위를 URL에 포함) Good: GET /users/123 , DELETE /posts/45 (명사 위주의 리소스와 HTTP 메서드 조합) HTTP Method 역할 (CRUD) 의미 GET Read...