Representational State Transfer(REST).
API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.
(프로토콜이나 표준이 아닌 아키텍처 제약 조건!)
Application Programming Interface.
다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의하고, 데이터를 요청하고 전달할 수 있게 해 준다. 그렇게 해서 서로 다른 프로그램이 정보를 공유하고 서비스를 이용할 수 있게 된다.
즉 ➡️ RESTful API란 REST 아키텍처 스타일의 제약 조건을 준수하고 RESTful 웹 서비스와 상호 작용할 수 있도록 하는 애플리케이션 프로그래밍 인터페이스(API 또는 웹 API)이다. 따라야 할 기준이 있지만, 속도를 저하시키고 더 무겁게 만드는 XML 메시징, 빌트인 보안 및 트랜잭션 컴플라이언스처럼 특정 요구 사항이 있는 SOAP(Simple Object Access Protocol) 등의 규정된 프로토콜보다 사용하기 쉬운 것으로 간주된다.
RESTful API는 일종의 형식이기 때문에 기술에 구애받지 않으므로 어떤 언어로 무엇을 써서 만들든 거기에 소프트웨어간 HTTP로 정보를 주고받는 부분이 있다면 RESTful 원칙에 따라 구현할 수 있다.
RESTful API는 크게 3가지로 구성되어 있다.
URL
URL은 리소스에 대한 경로를 지정하며, 웹페이지를 방문하기 위해 브라우저에 입력하는 웹 사이트 주소와 유사하다. URL은 요청 엔드포인트라고도 하며 클라이언트가 요구하는 사항을 서버에 명확하게 지정한다.
❔ 엔드포인트 : 웹 서버에서 서비스를 요청하고 응답을 받는 지점을 가리키며, 일반적으로 RESTful API에서 자주 볼 수 있다.
HTTP 주요 메소드
GET
: 리소스 조회
The GET method requests a representation of the specified resource. Requests using GET should only retrieve data.POST
: 리소스 생성
The POST method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.PUT
: 리소스 수정
The PUT method replaces all current representations of the target resource with the request payload.PATCH
: 리소스 (일부) 수정
The PATCH method is used to apply partial modifications to a resource.DELETE
: 리소스 삭제
The DELETE method deletes the specified resource.
❗ 사실 이것들의 기능이 특정 용도에 제한되어 있지는 않다 (예를 들어 POST 하나로도 데이터를 쓰고 읽고 수정하고 지울 수 있다). 그러나 누구든 각 요청의 의도를 쉽게 파악할 수 있도록 RESTful하게 API를 만들기 위해서는 이들을 목적에 따라 구분하여 사용해야 한다.
참조
https://aws.amazon.com/ko/what-is/restful-api/
https://www.redhat.com/ko/topics/api/what-is-a-rest-api