image

Rest API vs Restful API

태그
Dev
상세설명Rest api, Restful api 특징 및 차이점
작성일자2024.03.20

REST 란 ?

“REpresentational State Transfer”의 약자로 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻한다.

  • 자원 : 해당 소프트웨어가 관리하는 모든 것 (ex. 문서, 그림, 데이터, 해당 소프트웨어 자체 등)
  • 표현 : 그 자원을 표현하기 위한 이름 (ex. DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다.)
  • 상태 전달 : 데이터가 요청되는 시점에 자원의 상태를 전달한다. (JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적이다.)
  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에, 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다. REST는 네트워크 상에서 Clinet 와 Server 사이의 통신 방식 중 하나로 어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI로 GET, POST 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태(Representation of Resource)로 표현된다.

    REST 구성요소

  • 자원(Resource) : URI
  • 행위(Verb): HTTP Method (GET, POST, PUT, DELETE 와 같은 메서드)
  • 표현(Representation of Resource) : JSON 혹은 XML를 통해 데이터를 주고 받는다.
  • REST 특징

  • Server-Client(서버-클라이언트 구조) : 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다
  • Stateless(무 상태) : HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성을 갖는다.
  • Cacheable(캐시 처리 가능) : 웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다. ( HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있다.)
  • Layered System(계층 화) : Client는 REST API Server만 호출하며 REST Server는 다중 계층으로 구성될 수 있다. PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.
  • Code-On-Demand(optional) : Server로부터 스크립트를 받아서 Client에서 실행한다. 반드시 충족할 필요는 없다.
  • Uniform Interface(인터페이스 일관성) : URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행하며 HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • REST API 란?

  • REST의 특징을 기반으로 서비스 API를 구현한 것
  • 각 요청이 어떤 동작이나 정보를 위한 것 인지를 그 요청의 모습 자체로 추론이 가능한 것이 특징이다.
  • REST API 설계 규칙

  • URI는 정보의 자원을 표현해야 한다.
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다. (Method는 URI에 표함하지 않는다.)
  • URI는 명사를 사용한다. (동사 사용 X - ‘/getAllUsers’ , ‘/createNewUser’ 이런 식으로 동사 사용하면 안됨)
  • 슬래시( / )로 계층 관계를 표현한다.
  • URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다.
  • 밑줄( _ )을 사용하지 않고, 하이픝( - )을 사용한다.
  • URI는 소문자로만 구성한다.
  • 파일확장자는 URI에 포함하지 않는다.
  • RESTful API?

    RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.

    즉 ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다.

    요청을 보내는 주소만으로도 어떤 것을 요청 하는지 파악이 가능하다.

    참고

    https://dev-coco.tistory.com/97

    https://hahahoho5915.tistory.com/54

    https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html