학습 목표
- REST API에 대해 이해할 수 있다.
- REST 성숙도 모델에 대해 이해할 수 있다.
- REST API 문서를 읽을 수 있다.
- REST API에 맞춰 디자인할 수 있다.
- Open API와 API Key에 대해 이해할 수 있다.
💡) REST API 더 알아보기
REST API는 클라이언트와 서버 간의 통신과 데이터 교환을 가능하게 한다.
- REST API의 주요 특징
- 자원(Resources)
- REST에서는 모든 것을 자원으로 간주한다.
- 자원은 객체의 집합이나 단일 객체를 의미하고, 고유한 URI를 사용하여 식별된다.
- 자원은 해당하는 엔드 포인트를 통해 접근할 수 있다.
- HTTP 메서드
- RESTful API는 자원에 대한 작업을 수행하기 위해 HTTP 메서드를 사용한다.
- 가장 일반적으로 사용되는 메서드
- GET : 자원이나 자원의 컬렉션을 가져온다.
- POST : 새로운 자원을 생성한다.
- PUT : 기존 자원을 업데이트한다.
- DELETE : 자원을 삭제한다.
- 무상태(Stateless)
- RESTful API는 상태를 유지하지 않는 특징을 가진다.
- 각 요청이 독립적으로 처리되어야 하고, 요청에 필요한 모든 정보는 요청 자체에 포함되어야 한다.
- 서버는 세션 상태를 관리하지 않는다.
- 표현(Representation)
- REST API는 자원의 표현을 사용하여 데이터를 전달한다.
- 표현은 주로 JSON, XML, 또는 HTML과 같은 형식으로 이루어진다.
- 클라이언트는 요청을 보낼 때 표현 형식을 지정할 수 있으며, 서버는 해당 형식으로 응답을 제공한다.
- 인터페이스 일관성
- RESTful API는 일관된 인터페이스를 유지하는 것이 중요하다.
- 자원에 대한 작업을 위한 공통된 기본 원칙과 규칙을 의미한다.
- 예를 들어, URI는 자원을 식별하고, HTTP 메서드는 자원에 대한 동작을 정의하는데 사용된다.

💡) 왜 3단계까지 지키기가 어려울까요?
1. 기술적인 복잡성
높은 성숙도 단계에 도달하려면 기술적으로 복잡한 문제를 해결해야한다. 복잡한 아키텍처, 확장성 문제, 데이터 일관성 등과 같은 기술적인 도전 과제가 발생할 수 있다.
2. 조직 문화와 프로세스
성숙도 모델의 다음 단계로 진행하기 위해서는 조직 내에서 변화를 수용하고, 새로운 프로세스롸 문화를 적용해야 할 수도 있다. 이런 점은 조직의 역량, 리소스 및 문화 변화에 대한 도전과제가 될 수 있다.
3. 리소스 제한
높은 성숙도 단계로 진행하려면 충분한 리소스(인력, 예산, 기술 등)가 필요한데, 이러한 리소스 제한은 다음 단계로 진행하는 것을 어렵게 만들 수 있다.
4. 외부 의존성
조직의 성숙도 단계에 따라 외부 시스템, 파트너, 인프라 등과의 의존성이 증가할 수 있다. 외부 요소에 대한 제어 불가능성이 진행을 어렵게 만들 수 있다.
이 밖에도 다양한 이유들이 있겠지만, 추가적인 노력과 리소스가 필요할 수 있으며, 조직이 이러한 도전과제를 인식하고, 적절한 전략과 계획을 수립하여야 다음 단계로의 진행을 꾀할 수 있다.
GET 메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용해야 한다.POST 메서드는 요청마다 새로운 리소스를 생성하고 PUT 메서드는 요청마다 같은 리소스를 반환한다. 이렇게 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)하다고 한다. 그렇기 때문에 멱등성을 가지는 메서드 PUT과 그렇지 않은 메서드 POST는 구분하여 사용해야 한다.PUT 메서드와 PATCH 메서드도 구분하여 사용해야 합니다. PUT은 교체, PATCH는 수정의 용도로 사용합니다.❓) 궁금증