RESTful API란 무엇이며 어떻게 작동할까요? 이를 이해하려면 먼저 API의 의미를 알고 REST와 RESTful의 뜻에 대해 알아야 합니다.
API란?
- API는 Application Programming Interface를 의미합니다.
- 이는 다른 소프트웨어 시스템과 통신하기 위한 규칙입니다.
- 저 멀리에 있는 알 수 없는 누군가와 통신을 하고 싶다고 생각해보세요. 서로가 각자의 방식으로 통신 방식을 구현한다면 메시지를 주고 받을 수 없을 것입니다. 정확한 통신을 위한 일종의 규칙이 필요하겠죠. 이것이 바로 API의 역할입니다.
- 웹 API는 클라이언트와 서버를 연결하는 게이트웨이라 할 수 있습니다.
REST란?
- REST(Representational State Transfer)란 API 작동 방식을 구성하는 아키텍쳐입니다.
- 2000년 로이 필딩(Roy Fielding)이 초기 인터넷 네트워크 통신 규칙으로 제안되었습니다.
- REST 아키텍쳐는 모든 프로토콜과 독립적인 관계에 있지만. REST API를 구현하는 가장 일반적인 방법은 HTTP 프로토콜을 사용하는 것입니다.
- REST API는 객체, 데이터, 서비스 등과 같은 클라이언트가 접근할 수 있는 리소스를 중심으로 설계됩니다.
- 리소스는 URI라는 식별자를 갖고 있으며 이를 통해 각 리소스가 구분됩니다. 예를 들어, 고객의 주문을 처리하는 URI는 다음과 같을 수 있습니다.
https://adventure-works.com/orders/1
- REST 아키텍쳐의 특징은 다음과 같습니다.
- Stateless: 클라이언트 정보가 각 요청마다 독립적으로 처리되며 저장되거나 연결되지 않습니다.
- Layered System: 서버는 보안, 로드 밸런싱 등 각 요청을 처리하는 계층화된 시스템으로 구성
- Cacheability
- Code on demand: 클라이언트는 특정 코드가 실행되도록 서버에 요청할 수 있습니다.
RESTful API란?
RESTful API란 위에서 정리한 REST 규칙을 잘 준수하는 API를 의미합니다. 일반적인 의미에서 RESTful API는 REST API와 동이한 의미로 사용됩니다. RESTful API는 다음과 같은 장점을 갖습니다.
- Scalability
- Flexibility
- Independence
REST API 작동 방식
- 클라이언트가 서버에 요청합니다. 이때, 요청은 API 문서를 따라 서버가 이해할 수 있는 방식이어야 합니다.
- 서버는 클라이언트를 인증하고 요청 권한을 확인합니다.
- 서버가 요청을 수신하고 내부적으로 처리합니다.
- 서버는 클라이언트에 응답을 반환(요청 성공 여부 정보 포함)하고 클라이언트는 요청한 정보를 확인합니다.
REST API 요청의 구성
- HTTP를 통해 구성된 REST API 요청은 다음과 같은 메서드를 사용합니다.
GET
: URL의 리소스에 접근POST
: 서버에 데이터 전송PUT
: 서버의 기존 리소스를 업데이트하며 POST와 다르게 데이터는 하나만 생성DELETE
: 데이터를 삭제
- HTTP 헤더
- 헤더는 클라이언트와 서버 간에 교환되는 메타데이터
- 예) 요청 헤더의 경우 요청과 응답 형식, 요청 상태 등의 정보를 제공
- 헤더는 클라이언트와 서버 간에 교환되는 메타데이터
REST API 서버 응답의 예시
REST 원칙에 따라 서버 응답에는 다음 구성 요소가 포함됩니다.
- 상태 표시줄: 요청 성공 또는 실패를 알려주는 3자리 숫자 코드
- 200: 일반적인 성공
- 201:
POST
메서드 성공 - 400: 서버가 처리할 수 없는 요청
- 404: 리소르를 찾을 수 없음
- 메시지 본문: 요청에 따른 데이터로 HTML, XLT, JSON 등의 형식으로 정보 전달
'{"name: Jeong", "age: 32"}'
- 헤더: 응답에 대한 헤더 및 메타데이터
참고 자료
'개발 > Internet' 카테고리의 다른 글
서버 사이드 렌더링과 클라이언트 사이드 렌더링이란 무엇인가요? (0) | 2021.03.27 |
---|---|
웹 호스팅이란 무엇일까? (0) | 2020.08.30 |
DNS란 무엇이며 어떻게 작동할까? (0) | 2020.08.27 |