REST API에 대해서 알아보겠습니다
응용프로그램이나 서비스를 개발하는데 필요한 운영체제(OS)나 라이브러리 등의 특정 기능을 추상화하여 사용하기 쉽도록 만든 인터페이스다.
네이버 로그인을 구현해야 한다면, 네이버에서 제공되는 OpenAPI
를 통하여 로그인 기능을 호출하여 연동할 수 있다.
이는 개발자라면 누구나 사용할 수 있도록 공개된 API를 말하며, 개발자에게 사유 응용 소프트웨어나 웹서비스의 프로그래밍적인 권한을 제공합니다. 누구나 쓸 수 있는 API라는 뜻입니다.
이는 www와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식입니다. 자원의 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다.
API를 구축할때 URI(URL의 상위집합)와 HTTP Method를 활용하여 API의 기능을 추측 가능하게끔 아키텍쳐를 구성하는 원칙 같은 것입니다. REST 원칙을 잘 따른 API를 RESTful API라고 부릅니다.
URI는 특정 리소스를 식별하고, URL은 위치를 가리킵니다.
모든 리소스는 고유한 주소가 존재하고, 서버에 존재합니다. URI를 통해 리소스를 구분하고 호출합니다.
일반적인 CRUD를 뜻합니다.
브라우저와 웹 서버간 데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있고, 주로 JSON을 사용합니다.
서버 - 클라이언트 구조 (Server-Client)
무상태 (Stateless) : HTTP 프로토콜을 사용하기 때문에 HTTP의 특징인 무상태성을 갖습니다.
HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜입니다. 웹 서버에서 기능을 실행했을 떄 실행된 내용이 유지되지 않는다는 얘기이다. 어떤 기능을 수행하고, 해당 기능을 수행하고 있다는 상태를 유지하지 않는다. 이를 개선하기 위해 Cookie, Session 개념이 도입되었다.
캐시 처리 가능 (Cacheable) : HTTP 프로토콜에서 사용하는 Last-Modified Tag 또는 E-Tag를 이용해 캐싱을 지원한다.
계층화 (Layered System) : 클라이언트, 서버 로만 구성 할 수도 있고 중간에 Gateway나 프록시 서버와 같은 미들 웨어를 배치해 계층화할 수 있습니다.
인터페이스 일관성 (Uniform Interface) : URI로 지정한 리소스에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미합니다.
자체 표현 (Self-Descriptiveness) : URI만 분서갷도 무슨 기능인지 유추할 수 있다는 특성입니다.
REST 원칙을 기반으로 구현된 API를 말하며 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 형태를 말합니다.
BAD - https://velog.io/@rbw/putData
GOOD - https://velog.io/@rbw/data
마지막에 슬래시(/)를 포함 하지 않는다.
언더바 대신 대시를 사용한다.
행위를 포함하지 않는다
BAD - https://velog.io/@rbw/delete-Data/1
GOOD - https://velog.io/@rbw/data/1
REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다고 합니다
참고