Rest API
이번에는 개발에 관심있는 사람이라면 한번쯤은 들어봤을 Rest API
에 대해 알아보고자 한다.
Rest API에 대하여 본격적으로 살펴보기 이전에 API
개념에 대해 먼저 알아보자!
API란?
API는 Application Programming Interface
의 약자로, 응용프로그램에서 사용할 수 있도록, 운영체제 또는 프로그래밍 언어가 제공하는 기능을 이용해 이를 제어할 수 있도록 만든 인터페이스라고한다.
?... 솔직히 잘 이해가 안간다.
어플리케이션, 프로그래밍, 인터페이스 각각의 단어에 대해서는 익히 듣고 충분히 이해하고 있다.
보다 쉬운 이해를 위하여 비유를 통해 설명해보겠다.
대부분의 핸드폰에는 홈 버튼 이라는 기능을 제공한다.
즉, 해당 버튼을 누르면 언제 어디서든지 홈 화면으로 돌아갈 수 있도록 도와주는 기능을 제공하는 수단이다.
이는 곧 사용자 와 스마트폰 을 이어주는 매개체이다.
API도 같은 맥락이다. API는 프로그램과 또 다른 프로그램을 연결해주는 일종의 매개체 역할을 한다.
자신이 만든 서비스에서 결제 기능이 필요하다면 사용자들에게 어떠한 방법으로 결제가 가능하도록 만들 수 있을까?
출처: https://developers.kakao.com/docs/restapi/quick-reference
위와 같이 카카오페이에서 제공하는 기능등을 이용하면 훨씬 간편하게 기능을 구현할 수 있다.
앞서 우리는 API란 "응용프로그램에서 사용할 수 있도록, 운영체제 또는 프로그래밍 언어가 제공하는 기능을 이용해 이를 제어할 수 있도록 만든 인터페이스" 라는 정의를 보았다.
여기서 응용프로그램 은 우리가 만든 서비스를, 운영체제 또는 프로그래밍 언어가 제공하는 기능 은 카카오페이의 결제 서비스를 의미한다.
이를 아까 홈버튼에 비유해보자면, 카카오에서 제공하는 카카오페이 결제 서비스를 이용할 수 있도록하는 일종의 홈버튼 을 제공하는 것이다!
API에 대하여 알아봤으니 오늘의 본 목적인 Rest API에 대하여 본격적으로 알아보도록 한다!
Rest API
앞서 알아봤던 API 앞에 Rest
라는 문자열이 붙었다.
Rest가 무엇인지, 무슨 의미를 갖는지 알아보자!
Rest(REpresentational State Transfer)
Representational State Transfer
라는 용어는 2000년도에 로이 필딩이라는 분의 박사 학위 논문에서 최초로 소개되었다고 한다.
위 인물은 HTTP
의 주요 저자 중 한 인물로 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST
를 발표하였다.
즉, REST
는 HTTP
기반으로 필요한 자원에 접근하기 위한 방식을 정해놓은 아키텍처다.
여기서 말하는 자원 이란 저장된 데이터, 모든 파일, 서비스를 모두 포함한다.
REST에는 크게 4가지 속성이 존재한다.
서버에 존재하는 모든 자원은 각 자원당 클라이언트가 바로 접근이 가능한 고유의
URI(Uniform Resource Identifer, 통합 자원 식별자)
가 존재한다.클라이언트의 요청에 따라 필요한 정보를 제공하기 때문에 서버에서는 세션 정보를 보관할 필요가 없다. 이를 통해 서비스에 자유도가 높아지고 보다 유연한 아키텍처의 적응이 가능해진다.
HTTP
메소드를 이용한다. 모든 자원은HTTP
의 인터페이스인GET, POST, PUT, DELETE
메소드를 통해 접근된다.서비스 내 하나의 자원은 연관된 자원과 연결되어 표현이 가능해야 한다.
정리해보자! REST는 HTTP URI
를 통해 자원을 명시하고, HTTP Method(GET, POST, PUT, DELETE)
를 통해 자원에 접근한다.
REST API
REST API란, REST 기반의 서비스 API를 구현한 것을 의미한다.
REST API 의 간단한 예시를 살펴보도록 한다.
이제 마지막으로 RESTful
에 대하여 알아보도록 한다.
RESTful
RESTful
은 일반적으로 REST라는 아키텍처를 구현한 서비스를 나타내기 위해 사용되는 용어이다.
- 'REST API'를 제공하는 웹 서비스를 RESTful 하다고 할 수 있다.
즉, REST의 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
'iOS' 카테고리의 다른 글
[iOS] AppDelegate 그리고 SceneDelegate (0) | 2020.05.20 |
---|---|
[iOS] Singleton Pattern (0) | 2020.05.19 |
[iOS] MVC, MVVM, MVP (0) | 2020.05.16 |
[iOS] iOS13 이후 버전에서의 Navigation Controller 설정 (0) | 2020.05.15 |
[iOS] App LifeCycle (0) | 2020.05.15 |