그라가승훈
[네트워크] - REST API 본문
- REST란?
- REpresentational State Transfer의 약자이다.
- 분산 하이퍼미디어 시스템 ex) web 을 위한 아키텍쳐 스타일
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활요할 수 있다.
- 자원을 이름으로 구분하여 해당 자원의 정보를 주고 받는 모든 것을 의미한다.
- 일반적으로 JSON 또는 XML 데이터 타입으로 데이터를 주고 받는다.
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
- REST 구성 요소
- 자원(Resource) : HTTP URI
- 자원에 대한 행위(Verb) : HTTP Method
- 자원에 대한 행위의 내용(Representations) : HTTP Message Pay Load
아키텍쳐 스타일은 제약조건의 집합이다.
REST의 제약조건을 모두 지켜야 REST를 따른다라고 할 수 있다.
- REST를 구성하는 스타일 (제약조건)
- client - server(클라이언트-서버구조) : HTTP를 통해 관리되는 클라이언트 - 서버 아키텍처
- stateless(무상태) : 요청간에 클라이언트 정보가 저장되지 않고, 요청이 분리되어있고 서로 연결되어 있지 않는다.
- cache(캐시) : 클라이언트와 서버의 상호작용을 간소화 하는 캐시 가능 데이터
- uiform interface(인터페이스 일관성)
- identification of resources : 리소스가 uri로 식별되면 된다.
- manipulation of resources through representations : representation 전송을 통해 리소스를 조작해야 한다.
- self-descriptive messages : 메시지는 스스로를 설명해야 한다. 서버나 클라이언트가 변경되더라도 오고가는 메세지는 설명되어 있기 때문에 언제나 해석 가능하다.(확장 가능한 커뮤니케이션)
- hypermedia as the engine of application state (HATEOAS) : 애플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.
- layered system(계층화) : 요청된 정보를 검색하는데 관련된 서버의 각 유형을 클라이언트가 볼 수 없는 계층 구조로 체계화 하는 계층화된 시스템.
- code-on-demand (optional) : 요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있는 기능. ex) javascript
- REST는 웹의 독립적 진화를 위해 만들어 졌다.
- 웹 페이지를 변경했다고 해도 웹 브라우저를 업데이트 할 필요 없다.
- 웹 브라우저를 업데이트 했다고 해도 웹 페이지를 변형할 필요 없다.
- HTTP 명세가 변경되어도 웹은 잘 동작한다.
- HTML 명세가 변경되어도 웹은 잘 동작한다.
위와 같이 웹은 독립적으로 진화하고 있다.
- REST API란?
- REST 아키텍쳐 스타일을 따르는 API
- 최근 OpenAPI를 제공하는 업체 대부분은 REST API를 제공한다.
- HTTP의 기본 기능만으로 원격 정보에 접근하는 웹 응용 기술.
- REST API 특징
- 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
- REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
- REST API 설계 규칙
- URI는 동사보다는 명사, 대문자보다는 소문자를 사용.
- 도큐먼트(객체 인스턴스나 데이터베이스 레코드) 이름으로는 단수 명사를 사용
- 컬렉션(서버에서 관리하는 디렉터리 리소스) 이름으로는 복수 명사를 사용
- 스토어(클라이언트에서 관리하는 리소스 저장소) 이름으로는 복수 명사를 사용
- 마지막에 슬래시(/)를 포함하지 않는다.
- 가독성을 위해서라면 언더바(_)대신 하이폰(-)을 사용한다.
- 파일 확장자는 URI에 포함하지 않는다.
- 행위를 포함하지 않는다.
- SOAP과 REST의 차이
SOAP | REST | |
유형 | 프로토콜 | 아키텍처 스타일 |
기능 | 구조화된 정보 전송 | 데이터를 위해서 리소스에 접근 |
데이터 포맷 | XML | TEXT, HTML, XML, JSON 등 |
보안 | WS-Security, SSL | SSL, HTTPS |
데이터 캐시 | 캐시를 사용할 수 없음 | 캐시를 사용할 수 있음 |
- SOAP과 REST의 느낌적인 비교
- SOAP
- 복잡하다
- 규칙 많다
- 어렵다
- REST
- 단순하다
- 규칙 적다
- 쉽지만 제약조건을 만족시키기 어렵다.
Comments