즉 REST란
1) HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
2) HTTP Method(POST, GET, PUP, DELETE, PATCH 등)를 통해
3) 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
URI(Uniform Resource Identifier)이란?
통합자원식별자라고 부르고
- Uniform은 리소스를 식별하는 통일된 방식을 말합니다.
- Resource란, URI로 식별이 가능한 모든 종류의 자원(웹 브라우저 파일 및 그 이외의 리소스 포함)을 지칭합니다.
- Identifier는 다른 항목과 구분하기 위해 필요한 정보입니다.
-> 즉, URI는 인터넷상의 리소스 "자원자체"를 식별하는 고유한 문자열 시퀀스이다.
URL(Uniform Resource Locator)이란?
네트워크상에서 통합 자원(리소스)의 “위치”를 나타내기 위한 규약
-> 즉, 자원 식별자와 위치를 동시에 보여준다.
-> 웹 사이트 주소 + 컴퓨터 네트워크 상의 자원
- 특정 웹 페이지의 주소에 접속하기 위해서는 웹 사이트의 주소뿐만 아니라 프로토콜(https, http, sftp, smp 등)을 함께 알아야 접속이 가능한데, 이들을 모두 나타내는 것이 URL이다.
CRUD Operation란?
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로
REST에서의 CRUD Operation 동작 예시는 다음과 같다.
클라이언트와 서버가 분리되어 있으며, 클라이언트는 요청을 보내고 서버는 응답을 제공하는 구조이다.
이로 인해 클라이언트와 서버의 역할이 명확히 분리되며, 독립적인 확장이 가능하다.
서버는 클라이언트의 상태를 저장하지 않으며, 각 요청은 독립적으로 처리된다.
클라이언트가 필요한 모든 정보를 요청에 포함해야 하므로 확장성과 성능이 향상된다.
REST API 응답은 캐시 가능하도록 설계되어야 하며, 이를 통해 성능을 개선할 수 있다.
Cache-Control 등의 HTTP 헤더를 사용하여 캐시 정책을 설정할 수 있다.
REST 아키텍처는 여러 계층으로 구성될 수 있으며, 각 계층은 독립적으로 동작한다.
예를 들어, 로드 밸런서, 프록시, 게이트웨이 등의 중간 계층이 추가될 수 있다.
REST는 리소스를 조작하는 방식이 일관된 인터페이스를 가져야 합니다.
주요 원칙으로는 URI를 통한 리소스 식별, 표현 방식의 자기 설명성, HATEOAS(하이퍼미디어를 통한 애플리케이션 상태 전이) 등이 있다.
REST는 필요할 경우 클라이언트가 실행할 수 있는 코드를 서버에서 전달할 수도 있다.
예를 들어, JavaScript 코드나 스크립트를 응답으로 보내 실행할 수 있다. (하지만 일반적인 REST API에서는 잘 사용되지 않는다.)
이러한 특징을 통해 REST는 확장성과 유지보수성이 뛰어나며, 다양한 시스템에서 널리 사용되는 아키텍처 스타일이 되었습니다.
장점
단점
API(Application Programming Interface)
- 프로그래밍에서 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
- 즉, "애플리케이션(스마트폰, 카카오톡 서버 등 서로 다른 프로그램)이 인터페이싱하는(요청과 응답을 주고받는) 체계이다.
URI는 동사보다는 명사를, 대문자 보다는 소문자를 사용
Bad Example http://eddy.com/Running
Good Example http://eddy.com/run
마지막에 슬래쉬 (/)를 포함하지 않음
Bad Example http://eddy.com/welcome/
Good Example http://eddy.com/welcome
언더바 대신 하이픈 사용
Bad Example http://eddy.com/my_velog
Good Example http://eddy.com/my-velog
파일확장자는 URI에 포함하지 않음
Bad Example http://eddy.com/photo.jpg
Good Example http://eddy.com/photo
행위를 포한하지 않음
Bad Example http://eddy.com/delete-post/1
Good Example http://eddy.com/post/1
RESTFUL이란 REST의 원리를 따르는 시스템을 의미합니다. 하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아닙니다. REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있으며
모든 CRUD 기능을 POST로 처리 하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있습니다.
References