REST & RESTful API

Nina·2020년 10월 25일
1
post-thumbnail

Representational state transfer (REST) is a software architectural style that defines a set of constraints to be used for creating Web services. Web services that conform to the REST architectural style, called RESTful Web services, provide interoperability between computer systems on the internet. RESTful Web services allow the requesting systems to access and manipulate textual representations of Web resources by using a uniform and predefined set of stateless operations.

1. REST & REST API

REST란 웹에 존재하는 모든 자원에 고유한 URI를 부여하여 동 자원에 대한 주소를 지정하는 방법론이다. 이미지, 영상, 데이터 등 이름 붙여질 수 있는 모든 정보의 형태가 여기서 말하는 자원에 속한다. RESTful API는 이러한 REST의 특징을 지키면서 API를 제공한다는 의미이다. API에서 전송하는 자원을 URI로 표현하고, 해당 자원에 행하고자 하는 의도를 HTTP 메소드로 정의한다.각 엔드포인트는 리소스를 표현하는 고유의 URI 주소를 가지고 있으며, HTTP메소드를 처리할 수 있게 된다.

REST에 적용되는 조건들

💻Client-server
사용자 인터페이스(클라이언트)와 데이터 저장소(서버)를 분리함으로써 각각의 파트가 독립적으로 개선될 수 있도록 한다.
💻Stateless
각 요청과 응답은 과거의 통신과 독립적이기 때문에 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야한다.
💻Cacheable
어떠한 데이터가 cacheable한지 non-cachealbe한지 명시되어야한다. API 응답이 매우 드물게 변경되는 경우, 동 API가 cachealbe하다고 명시하여 클라이언트 어플리케이션이 캐시된 버전의 응답을 만들어 스스로 처리하게 함으로써 불필요한 통신을 줄일 수 있다.
💻Uniform Interface
하나의 자원은 불필요하게 크거나 모든 것들을 담고있지 않는 것이 좋다. 만약 관련있는 다른 자원이 있다면, 링크를 통해 불러올 수 있도록 해야한다. 하나의 자원은 하나의 논리적 URI를 가지고 있어야하며, 이러한 방식을 통해 관련있는 데이터를 쉽게 불러올 수 있다(It’s always better to synonymize a resource with a web page.).
💻Layered system
Layered system 스타일을 통해 아키텍쳐를 component behavior를 기준으로 수직적인 계층구조로 이루어지게 할 수 있다. 결과적으로 클라이언트는 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다.
💻Code on demand(optional)
REST allows client functionality to be extended by downloading and executing code in the form of applets or scripts. This simplifies clients by reducing the number of features re다quired to be pre-implemented.

2. 기본 REST API 디자인

REST API는 HTTP를 기반으로 삼고 있으므로 각 액션에 대해 알맞은 HTTP 메소드를 사용하여야 한다.

(1) HTTP Methods


idempotent(멱등성): 여러 번 실행해도 결과가 변하지 않음. DELETE 메소드로 삭제를 한 뒤 똑같이 DELETE 요청을 하면 아무런 변화가 없다. PUT이나 GET도 마찬가지이다. 하지만 POST 메소드를 사용할 경우 계속 새로운 리소스가 생성될 것이다.
PUT과 PATCH 모두 CRUD 중 Update 메소드이다. 하지만 PUT은 멱등성이 있는 반면 PATCH는 멱등성이 없으며, PUT은 데이터 전체를 수정하기 위해, PATCH는 일부만 수정하기 위해 사용한다는 차이점이 있다.

(2) HTTP 상태 코드


profile
https://dev.to/ninahwang

0개의 댓글