REST API 와 RESTful API

김태인·2022년 8월 25일
0
post-thumbnail

내일배움캠프를 진행하면서 제일 갈급했던건 각 용어에 대한 정의였다
막연하게 이야기했던 용어들을 정의하고 짚어보며 머릿속에 파편들을 개념차게 모으고싶다

오늘은 REST API와 RESTful API를 살펴봤다

REST(REpresentational State Transfer)란?

자원의 이름으로 구분해 해당 자원의 상태를 주고 받는 것 자체를 REST라고 할 수 있다

  • 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻함

  • 자원 : 해당 소프트웨어가 관리하는 모든 것(문서, 그림, 데이터, 해당 소프트웨어 자체 등)

  • 표현 : 그 자원을 표현하기 위한 이름 (DB상 학생 정보가 자원이면, 'students'를 자원의 표현으로 정함)

  • 상태 전달 : 데이터가 요청되는 시점에 자원의 상태를 전달한다. (JSON 혹은 XML을 통해 데이터를 주고 받는것이 일반적)

REST는 기본적으로 웹의 기존 기술과 HTTP프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다
REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다

REST의 개념

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것 말한다

URI 와 URL의 차이점?
URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미함
반면 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성
URI는 URL을 포함하게 되며 URI가 URL보다 포괄적이 범위이고 자원을 구조와 함께 나타내기도 한다

REST의 구성 요소

  1. 자원(Resource) - URI
  • 모든 자원에는 고유한 ID가 존재하며, 이 자원은 Server에 존재
  • 자원을 구별하는 ID는 '/exgroups/:exgroup_id'와 같은 HTTP URI
  • Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
  1. 행위(Verb) - Method
  • HTTP 프로토콜의 Method를 사용
  • HTTP 프로토콜은 GET, POST, PUT, PATCH, DELETE의 Method를 제공(CRUD)

GET - Read: 정보 요청, URI가 가진 정보를 검색하기 위해 서버에 요청
POST - Create: 정보 입력, 클라이언트에서 서버로 전달하려는 정보를 보냄
PUT - Update: 정보 업데이트, 내용을 갱신하기 위해 사용 (데이터를 전체 변경할때)
PATCH - Update: 정보 업데이트, 주로 내용을 갱신하기 위해 사용 (데이터를 일부만 변경할때)
DELETE - Delete: 정보 삭제

  1. 표현 (Representation of Resource)
  • Client와 Server가 데이터를 주고받는 형태로는 JSON, XML, TEXT, RSS등이 있음
  • JSON, XML을 통해 데이터를 주고 받는것이 일반적이며 근래는 JSON이 가장 많이 쓰임

REST API?

REST API의 정의

  • REST의 특징을 기반으로 API를 구현한 것
  • HTTP 요청을 보낼 때 어떤 URI 에 어떤 Method를 사용할지 개발자들 사이에 널리 지켜지는 약속
  • 형식이기때문에 기술에 구애받지는 않음

REST API의 특징

  • REST API의 가장 큰 특징은 각 요청만으로도 어떤 동작이나 정보를 위한 것일지 요청의 모습 자체로 추론이 가능한 것

REST API 디자인 가이드

  • REST API설계 시 중요한 항목

  • 첫번째 = URI는 정보의 자원을 표현해야 함

  • 두번째 = 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다
    행위(Method)는 URI에 포함하지 않는다

REST API의 설계 규칙

  1. URI는 명사를 사용한다 (리소스명은 동사가 아닌 명사 사용)
    1-1 아래와 같은 동사는 사용하지 않음
  • /getAllUsers
  • /getUserById
  • /createNewUser
  • /updateUser
  • /deleteUser
  1. 슬래시(/)로 계층 관계를 표현한다

  2. URI 마지막 문자로 슬래시(/)를 포함하지 않는다

  3. 밑줄(_)은 사용하지 않고, 하이픈(-)을 사용한다.

  4. URI는 소문자로 구성한다

  5. HTTP 응답 상태코드 사용

  • 클라이언트는 해당 요청에 대한 실패나 처리 완료, 잘못된 요청등에 대한 피드백을 받아야 함
  1. 파일확장자는 URI에 포함하지 않는다

REST API와 RESTful API는 뭐가 다른거야?

  • RESTful하다는 것은 REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 한다
  • REST 원리를 잘 따르는 시스템을 RESTful하다고 함
참조 블로그 : https://dev-coco.tistory.com/m/97
profile
코딩이 취미가 되는 그날까지

0개의 댓글