REST API
공부해야지 공부해야지만 몇 일째..
오늘마저 안하면 진짜 못할 것 같아서 글 적습니다.
API, 너는 뭐니?
API란 무엇인가요?
API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다. 스마트폰의 날씨 앱은 API를 통해 이 시스템과 “대화”하고 휴대폰에 최신 날씨 정보를 표시합니다.
API는 무엇을 의미하나요?
API는 Application Programming Interface의 줄임말입니다.
API의 맥락에서 Application
은 고유한 기능을 가진 모든 소프트웨어입니다.
Interface
는 두 application 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청(Request)과 응답(Response)을 사용하여 두 application이 서로 통신하는 방법을 정의합니다.
API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.
API는 어떻게 작동하나요?
API 아키텍처는 일반적으로 클라이언트
와 서버
측면에서 설명됩니다. 요청을 보내는 애플리케이션을 클라이언트라고 하고, 응답을 보내는 애플리케이션을 서버라고 합니다. 위의 예시에서 기상청의 날씨 데이터베이스는 서버이고 모바일 앱은 클라이언트입니다.
API가 생성된 시기와 이유에 따라 API는 4가지 방식으로 작동할 수 있습니다.
- SOAP API
- Simple Object Access Protocol API
- 단순 객체 접근 프로토콜을 사용하며, 클라이언트와 서버는
XML
을 사용하여 메시지를 교환합니다. - 과거에 많이 사용되었으며 유연성이 떨어지는 API입니다.
- RPC API
- Remote Procedure Call API
- 원격 프로시저 호출로, 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송합니다.
- Websocket API
- JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발입니다.
- 클라이언트 앱과 서버 간의 양방향 통신을 지원합니다.
- 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적입니다.
- REST API
- REpresentational State Transfer API
- 오늘날 웹에서 볼 수 있는, 가장 많이 사용되고 유연한 API입니다.
- 클라이언트는 서버에 요청을 데이터로 전송합니다.
- 서버는 이 클라이언트 입력을 사용하여 내부 함수를 시작하고, 출력 데이터를 클라이언트에 반환합니다.
웹 API란 무엇인가요?
웹 API 또는 웹 서비스 API는 웹 서버와 웹 브라우저 간의 애플리케이션 처리 인터페이스입니다. 모든 웹 서비스는 API이지만 모든 API가 웹 서비스는 아닙니다. REST API는 위에서 설명한 표준 아키텍처 스타일을 사용하는 특수한 유형의 웹 API입니다.
REST API란 무엇인가요?
REST는 클라이언트가 서버 데이터에 엑세스하는 데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의합니다. 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환합니다.
REST API의 주된 특징은 무상태입니다. 무상태는 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미합니다. 서버에 대한 클라이언트 요청은 웹 사이트를 방문하기 위해 브라우저에 입력하는 URL과 유사합니다. 서버의 응답은 웹 페이지의 일반적인 그래픽 렌더링이 없는 일반 데이터입니다.
REST API를 사용하면 어떤 이점이 있나요?
- 통합 API는 새로은 애플리케이션을 기존 소프트웨어 시스템과 통합하는 데 사용됩니다. 그러면 각 기능을 처음부터 작성할 필요가 없기 때문에 개발 속도가 빨라집니다. API를 사용하여 기존 코드를 활용할 수 있습니다.
- 혁신 새로운 앱의 등장으로 전체 산업이 바뀔 수 있습니다. 기업은 신속하게 대응하고 혁신적인 서비스의 신속한 배포를 지원해야 합니다. 전체 코드를 다시 작성할 필요 없이 API 수준에서 변경하여 이를 수행할 수 있습니다.
- 확장 API는 기업이 다양한 플랫폼에서 고객의 요구 사항을 충족할 수 있는 고유한 기회를 제공합니다. 예를 들어 지도 API를 사용하면 웹 사이트, Android, iOS 등을 통해 지도 정보를 통합할 수 있습니다. 어느 기업이나 무료 또는 유로 API를 사용하여 내부 데이터베이스에 유사한 액세스 권한을 부여할 수 있습니다.
- 유지 관리의 용이성 API는 두 시스템 간의 게이트웨이 역할을 합니다. API가 영향을 받지 않도록 각 시스템은 내부적으로 변경해야 합니다. 이렇게 하면 한 시스템의 향후 코드 변경이 다른 시스템에 영향을 미치지 않습니다.
RESTful API
- HTTP 프로토콜 기반(HTTP 1.1)
- 리소스(자원)는 URI로 표현하며, 고유해야 한다.
- URI는 단순하고 직관적인 구조여야 한다.
- 처리 결과를 status code로 사용한다.
- 리소스 상태는 HTTP Methods를 활용해 구분한다.
- CRUD Operation
POST
: Create(추가/생성)GET
: READ(조회)PUT
: Update(수정)DELETE
: Delete(삭제)
- CRUD Operation
- XML 또는 JSON을 활용해 데이터를 전송한다.
- 동사보다는 복수 명사를 기준으로 사용하며, 하위 자원을 표현하기 위해
/
를 사용한다.GET /users : 모든 사용자의 정보를 가져온다. GET /users/{id} : id에 해당하는 사용자의 정보를 가져온다. POST /users : 새로운 사용자를 추가한다. PUT /users/{id} : id에 해당하는 사용자 정보를 수정한다. DELETE /users/{id} : id에 해당하는사용자 정보를 삭제한다.
REST API의 특징
- 무상태성(Stateless)
- 클라이언트의 컨텍스트를 서버 쪽에 유지하지 않는다.
- 각 API 서버는 들어오는 요청만 메시지로 처리한다.
- 캐쉬 가능(Cacheable)
- HTTP 프로토콜 표준에서 사용하는 ‘last-modified’ 태그나 ‘e-tag’ 태그를 사용하면 구현할 수 있다.
- 클라이언트가 HTTP GET을 ‘last-modified’ 값과 함께 보냈을 때, 컨텐츠의 변화가 없으면 ‘304 not modified’를 반환하고 클라이언트는 자체 캐쉬에 저장된 값을 사용한다.
- 네트워크 응답시간과 성능, 서버의 자원 사용률을 향상시킬 수 있다.
- HTTP 프로토콜 표준에서 사용하는 ‘last-modified’ 태그나 ‘e-tag’ 태그를 사용하면 구현할 수 있다.
- 클라이언트-서버 구조
- 서버는 API를 제공하고 제공된 API를 이용해 비즈니스 로직 처리 및 저장을 책임진다.
- 클라이언트는 사용자 인증이나 컨텍스트(세션/로그인) 등을 직접 관리하고 책임진다.