REST(Representational State Transfer)
REST 란?
- 자원의 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미함.
- 즉 REST는 자원 기반의 구조 (ROA, Resource Oriented Architecture) 설계의 중심에 자원이 있고, HTTP Method를 통해 자원을 처리하도록 설계된 아키텍처를 말함.
- 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URL를 부여함.
HTTP Method (CRUD)
1. Create : 생성
2. Read : 읽기
3. Update : 수정
4. Delete : 삭제
URL, URI
1. URL (Uniform Resource Locator) : 인터넷에서 웹 페이지, 이미지, 비디오 등 리소스의 위치를 가리키는 문자열.
2. URI (Uniform Resource Identifier) : 하나의 리소스를 가리키는 문자열.
API(Application Programming Interface)
API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체를 말한다. 우리가 요청하는 URL을 통해 데이터를 받는 방식.
API의 역할
- API는 서버와 데이터베이스에 대한 출입구 역할을 함.
- 데이터베이스에 대한 접근을 할 수 있는 출입구 역할을 하며, 하용된 사람에게만 접근이 가능토록 함.
- API는 애플리케이션과 기기가 원할하게 통신할 수 있도록 한다.
- API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 한다.
- API는 모든 접속을 표준화 한다.
- API는 모든 접속을 표준화하기 때문에 기계/운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있음.
REST의 장단점과 특징
특징
Server-Client(서버 - 클라이언트 구조)
- 자원이 있으며 제공하는 쪽을 Server, 자원을 요청하는 쪽을 Client 라고함.
- REST Server : API를 제공하고 비즈니스 로직 처리 및 저장을 책임짐.
- Client : 사용자 인증이나 Context(세션과 로그인 정보) 등을 지접 관리하고 책임짐.
Stateless(무상태)
- HTTP 프로토콜은 Stateless Protocol로 REST 역시 무상태성을 가짐.
- Client의 세션 및 쿠기에 대한 정보를 신경쓰지 않아도 되므로 구현이 단순해짐.
- Server는 각각의 요청을 완전히 별개인 것으로 인식하고 처리함.
무상태 (Stateless)
비연결적인 특성으로 연결이 해제됨과 동시에 서버와 클라이언트는 클라이언트가 이전에 요청한 결과에 대해서 잊어버리게 됩니다. 즉, 클라이언트가 이전 요청과 같은 데이터를 원한다고 하더라도 다시 서버에 연결을 하여 동일한 요청을 시도해야만 합니다.
HTTP는 이러한 특성으로 인해 'Stateless Protocol' 이라고 불리며, 독립적인 쌍의 요청과 응답을 처리함으로 단순하고, 상태를 저장해야 하는 서버의 부담을 감소시킬 수 있습니다.
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없음.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능함.
- REST API 메세지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있음.
- 서버와 클라이언트 역할을 명확하게 분리함.
단점
- 표준이 존재하지 않음.
- 사용할 수 있는 메소드가 4가지 뿐임.
REST API 설계 예시
- URL는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
Bad Example : http://khj93.com/Running/
Good Example : http://khj93.com/run/
- 마지막에 슬래시를 포함하지 않는다.
Bad Example : http://khj93.com/test/
Good Example : http://khj93.com/test
- 언더바 대신 하이폰을 사용한다.
Bad Example : http://khj93.com/test_blog
Good Example : http://khj93.com/test-blog
- 파일확장자는 URL에 포함하지 않는다.
Bad Example : http://khj93.com/photo.jpg
Good Example : http://khj93.com/photo
- 행위를 포함하지 않는다. (GET, POST, PUT, DELETE)
Bad Example : http://khj93.com/delete-post/1
Good Example : http://khj93.com/post/1
RESTful
- Restful이란 REST의 원리를 따르는 시스템을 의미함.
- REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다고 할 수 있음
'CS 지식 > 네트워크' 카테고리의 다른 글
Http 프로토콜 구조 (0) | 2023.05.08 |
---|---|
HTTP 2xx, 3xx, 4xx, 5xx 상태코드 (0) | 2023.05.06 |
HTTP 메소드 및 메소드의 속성 (0) | 2023.05.06 |
HTTP (0) | 2023.05.04 |
네트워크(TCP/UDP,IP,URI/URL) (0) | 2023.05.04 |