REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 의미한다.
REST 는 Representational State Transfer 의 줄임말
SOAP (Simple Object Access Protocol)
- 컴퓨터 네트워크 상에서 http, https 등을 통해 XML기반 메세지를 교환하는 프로토콜
- SOA를 구현하는 규약이다.
- SOA?서비스가 중심이되는 소프트웨어 아키텍처의 한 종류이다.
- Service Oriented Architecture
- 구성 : 모든 data가 XML로 표현되고 data와 data를 다루는 operation이 WSDL로 정의되면 UDDI에 등록되어 누구라도 서비스를 검색, 접근할 수 있도록 공개한다.
- WSDL(Web Service Description Language) : 웹서비스를 기술한 언어, XML로 작성
2. UDDI (Universal Description, Discovery and Integration) : 웹서비스 저장소
한계점
- 구조가 복잡하다 → http로 전달되기 무겁다.
- 개발 환경 지원 필요 → 웹 서비스 개발 난이도가 높음
- UDDI를 거쳐야만 사용할 수 있다.
⇒ SOAP의 한계를 극복하기위해 새로운 아키텍쳐가 필요해졌고 그렇게 나온게 REST이다.
REST (Representational State Transfer)
아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스
- 자원의 표현에 의한 상태 전달
- 자원(resource)의 표현(representation) → resource의 이름
- 상태 전달 → data가 요청되면 JSON 혹은 XML로 전달된다.
- 목적 : ROA를 구현하기 위한 규약
- ROA? : Resource Oriented Architecture로 중간 매개체(ex. UDDI)가 없이 resource를 직접 주고받는 아키텍처
→ SOA는 서비스를 중심으로 했는데 반해 ROA는 자원 중심이다
- 구성
- 자원(Resource) → 모든 자원은 고유한 ID(URI)가 존재하고 서버에 저장된다
- 행위(Verb) → http method (GET, POST, PUT, DELETE)
- 표현(Representational) → Client의 data 요청에 서버가 응답한다. JSON, XML 등의 형태
- 특징
- Client - Server 구조 : 명확히 구분되어 있어 개발이 쉽고 확장성이 좋다.
- Stateless : http를 기반으로 하기에 REST 역시 무상태성을 갖는다.
- 캐시처리가능
- Layered System (계층화)
- Uniform Interface (인터페이스 일관성)
- 장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
- HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
- 한계
- 표준이 없다.
- 사용할 수 있는 메서드가 4개 뿐이다.
- 때로는 Restful 하게 만드려고 메서드를 사용하여 속도가 느려질 수 있다
- (GET이 POST 보다 빠르기 때문)
Restful 이란?
REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어.
- 목적 : 이해와 사용이 쉬운 REST API를 만드는 것
출처 강의 : https://www.youtube.com/channel/UCY4W_6R3mnN8LDr3IjQOhFw
'웹공부' 카테고리의 다른 글
실행 컨텍스트 (Execution Context) (0) | 2022.04.21 |
---|---|
Next.js 튜토리얼 따라하기 - 4 (SEO) (0) | 2022.04.17 |
Next.js 튜토리얼 따라하기 - 3 (Dynamic Routes) (0) | 2022.04.16 |
Next.js 튜토리얼 따라하기 - 2 (사전렌더링, 데이터 가져오기) (0) | 2022.03.21 |
Next.js 튜토리얼 따라하기 - 1 (설치, 라우팅, Assets) (0) | 2022.03.21 |