REST

·2023년 5월 6일
0

개발 지식

목록 보기
69/96
post-thumbnail
post-custom-banner

REST (REpresentational State Transfer)

웹 어플리케이션에서 사용되는 통신 아키텍처 스타일로, 클라이언트와 서버 간의 통신 방식을 정의하고 자원과 표현에 의한 상태전달을 진행한다.

자원과 URI (Uniform Resource Identifier)

자원은 웹 어플리케이션에서 관리되는 모든 것을 말한다. 모든 자원은 서버에 존재하며, 이러한 자원을 구별하는 ID가 URI 이다. 클라이언트는 URI를 통해 서버에 요청을 보내며, 서버는 해당 요청에 대한 적절한 응답을 반환한다.

URI vs URL (Uniform Resource Location)
URL 은 인터넷 상 자원의 위치를 말하며, URI는 인터넷 상 자원을 식별하기 위한 문자열의 구성이다. URI는 URL을 포함하는 개념이다.

구성요소

자원

URI는 /example/:ex_id 와 같은 형태로 구성된다. 클라이언트는 URI를 통해 서버에 요청을 보내며, 서버는 해당 요청에 대한 적절한 응답을 반환한다.

행위

HTTP 프로토콜의 Method를 사용한다. HTTP Method 는 CRUD 형태의 GET, POST, PUT, PATCH, DELETE 등을 제공한다.

  • GET : Read의 업무를 수행한다. URI 가진 정보를 검색하기 서버에 요청한다.
  • POST : Create의 업무를 수행한다. 클라이언트에서 서버로 전달하려는 정보를 보낸다.
  • PUT : Update의 업무를 수행한다. 주로 전체의 내용을 갱신하기 위해 사용한다.
  • PATCH : Update의 업무를 수행한다. 주로 일부의 내용을 갱신하기 위해 사용한다.
  • DELETE : Delete의 업무를 수행한다. 서버의 자원을 삭제한다.

표현

클라이언트와 서버가 데이터를 주고 받은 포맷형태로 JSON, XML, TEXT 등이 있다. 일반적으로는 JSON 과 XML을 가장 많이 사용한다.

REST 특징

클라이언트-서버 구조

클라이언트는 서버에게 요청을 보내고 서버는 클라이언트에서 오는 요청에 대해 응답만 보내면 되기 때문에, 개발에 있어서 서버와 클라이언트의 의존성이 줄어들고 개별적인 작업 진행이 가능해졌다.

Stateless

REST는 무상태성을 갖는다. 클라이언트와 서버는 서로의 상태를 인지할 수 없다. 각 API 요청은 모두 별개의 것으로 인식한다. 예를들어 A,B 요청이 진행될 때, A의 요청이 B 요청과 연관 되어서는 안된다.

인터페이스 통일

URI 로 지정한 자우너에 대한 요청이 통일되어 있으며, HTTP 프로토콜을 따르는 모든 플랫폼에서 인터페이스를 그대로 따라 사용할 수 있기 때문에, 특정 언어나 기술에 종속되지 않은 체 통신 연결을 진행할 수 있다.

또한 통일화된 통신 체계인 만큼, 기술적인 부분을 몰라도 요청 메시지나 응답 메시지를 보고 어떤 자원이 오고 가는 지 쉽게 이해할 수 있다.

REST API

정의

REST의 특징을 기반으로 API를 구현하는 것을 말한다.

REST API 가이드

  • URI는 정보의 자원을 표현해야한다.
  • 자원에 대한 행위는 HTTP Method로 표현한다. 단 행위는 URI에 포함하지 않는다.
  • URI는 명사를 사용한다. /getUser (x)
  • 슬래시로 계층 관계를 표현한다.
  • _ 을 사용하지 않고, - 을 사용한다.
  • URI는 소문자로만 구성한다.
  • HTTP 응답 상태 코드를 사용한다. 에러의 경우, 어떤 이유에서 나타난 에러인지를 명확히 하기 위해, 에러 메시지를 함께 전달한다.

RESTful API

REST의 설계 규칙을 잘 지킨 API를 RESTful API 라고 한다. 즉, REST의 원리를 잘 따른느 시스템을 RESTful 하다라고 한다.

참고
REST란? REST API 와 RESTful API의 차이점
REST란? REST API / RESTful API차이점

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.
post-custom-banner

0개의 댓글