학습 목표
- 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
는 수정의 용도로 사용합니다.❓) 궁금증