“Application Programming Interface”의 약자
클라이언트, 서버와 같은 서로 다른 프로그램에서 어떠한 정보에 대하여 요청과 응답을 주고 받을 수 있게 만든 체계를 API라고 합니다.
다시말해, API는 “하나의 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을수 있는 수단”이라고 할 수 있습니다.
REST는 1998년 당시 대학원생 신분이었던, “Roy T Fielding” 으로부터 시작됩니다.
Roy T Fielding 은 당시 HTTP/1.0 표준에 대해 기능을 적립하고, 명세에 기능을 더하며, 고치는 일을 하고 있었습니다.
이때 이미 점차 넓어지고 있는 웹 생태계에 문제를 끼치지 않고, HTTP를 발전 시킬 수 있을까 고민하면서 만들었던 것이 바로 “REST” 입니다.
REST → “Representational State Transfer”의 약자로 말 그대로 해석을 하면, 데이터 자원을 주고 받을 수 있도록 표현한 것이라고 생각하면 됩니다.
Roy T Fielding은 이것을 발표한 논문에서 이렇게 표현합니다.
분산 하이퍼미디어(WEB..)을 위한 아키텍처 스타일. 규칙과 제약조건
REST는 기존 HTTP Method, Status Code 등을 적극적으로 이용하며, 자원(Resource)에 고유한 URI을 할당해 사용하도록 만든 것이 특징입니다.
REST는 초기에는 큰 관심을 받지는 못했습니다. 그때 당시 많이 사용되고 있던 방식이 있었기 때문입니다.
당시 유행으로 사용되고 있던 SOAP라는 아키텍처 방식으로 API가 사용되고 있었습니다. 하지만, SOAP는 워낙 복잡하고, 사용하기 어려웠지만, REST 방식은 훨씬 직관적이고, 간단한 코드를 사용했습니다.
이후 AWS 등 API를 제공하던 대기업들이 REST를 사용하게 되면서 유행처럼 사용되기 시작합니다.

REST라는 아키텍처, 제약 조건을 따르는 방식을 통해 만든 API를 “REST API”라고 합니다.
“REST 아키텍처의 제약조건을 따르는 API 방식”
2008년에 EMC, IBM, Microsoft가 함께 CMS를 표준화하면서 REST API에 대한 것을 문서화하기 시작하고, 2016년부터 매년 Microsoft가 REST API에 대한 표준 가이드라인을 제공하기 시작합니다.
그런데 정작 REST를 개발을 한 “Roy T Fielding”은 저건 REST API가 아니라고 이야기 하고 있답니다.ㅎ
REST API를 사용하는 방법에는 크게 아래 두가지를 표현합니다.
“특정 리소스를 식별하는 식별자”를 의미한다.
흔히 우리가 아는 URL과는 다른 의미로, URL은 주소(Location)를 이야기 하는 것이라면, URI는 URL보다 조금 더 특정한 자원을 지칭하는 것 (Identifier)이라고 생각하면 됩니다.
REST API를 처음 개발할 때, 웹 생태계에 표준적으로 사용되고 있는 HTTP를 어떻게 사용할 수 있을까 고민했기에 이러한 HTTP URI 방식을 통해 자원을 명시하여 요청하고 있습니다.
//URL
https://www.exaple.com/
//URI
https://www.exaple.com/home/index
HTTP에서 제공하는 Method를 사용하여 API 호출을 합니다.
💡CRUD Operation이란?
- Create : 데이터 생성(POST)
- Read : 데이터 조회(GET)
- Update : 데이터 수정(PUT, PATCH)
- Delete : 데이터 삭제(DELETE)
HTTP Method를 사용하여, 데이터를 주고 받는 과정에서 명시적으로 어떤 요청을 보내는 것인지 알 수 있습니다.
//간단 예시
GET /movies/1
Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
HTTP 프로토콜의 Method를 사용합니다.
HTTP 프로토콜은 GET, POST, PUT, PATCH, DELETE 와 같은 메서드를 제공하는데, 이를 통하여 명시적으로 데이터를 요청하는 행위를 표현할 수 있습니다.
Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보냅니다.
REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 응답을 받을 수 있다.JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적입니다.

참조