웹공부

Restful API

syom 2022. 5. 16. 13:21

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에 등록되어 누구라도 서비스를 검색, 접근할 수 있도록 공개한다.
  1. 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