REST
REST는 Representational State Transfer의 약자로, HTTP 통신을 활용하기 위해 고안된 아키텍처이다.
- Representational
인터넷상의 자원을 URI로 나타낼 수 있음을 의미
URI로 표현된 자우너을 HTTP메서드를 이용해 CRUD 연산을 할 수 있다. - State Transfer
자원의 상태를 주고받는 것, 요청받은 자원의 상태를 전달하는 것
💡 REST의 6가지 특징
- 일관된 인터페이스
자원을 나타내는 URI를 HTTP 메서드로 조작하는 일관된 인터페이스를 사용한다.
HTTP를 따르는 모든 플랫폼에서 REST를 사용할 수 있다. - 클라이언트-서버 구조
클라이언트와 서버 간에 요청-응답의 독립적인 구조를 가진다.
클라이언트 : 서버에 요청을 보내고 응답을 대기
서버 : 자원을 가지며 클라이언트의 요청에 응답 - 무상태성
서버에서 클라이언트의 요청을 저장하거나 관리하지 않는다.
서버는 요청에 대한 처리와 응답만 한다. - 캐싱 가능
HTTP 표준을 사용하므로 클라이언트는 이전에 서버로부터 받은 응답을 저장, 재사용하는 캐싱을 할 수 있다.
캐싱은 서버 부하를 줄여주고, 클라이언트는 응답을 비교적 빨리 받을 수 있다. - 자체 표현 구조
REST API는 자원, 행위, 표현으로 구성되어 REST API 메시지를 보고 어떤 요청을 하는지 알 수 있다. - 계층형 구조
REST 서버는 다중계층으로 구성될 수 있어 보안, 암호화와 같은 계층을 추가해 서버에 대한 기능을 유연하게 확장한다.
💡 URI, URL, URN 용어 설명
URI(Uniform Resource Identifier)
인터넷에 있는 자원을 나타내는 주소.
URI는 인터넷에서 요구하는 기본 조건으로 인터넷 프로토콜에 항상 붇어 다닌다.
URL(Uniform Resource Locator)
인터넷에서 자원의 위치를 알 수 있는 규약
웹사이트 주소와 인터넷의 모든 자원을 나타낼 수 있다.
URN(Uniform Resource Name)
자원의 위치 정보가 아닌 실제 자원을 특정한다.
REST API
말그대로 REST를 기반으로 한 API를 뜻한다. 즉, REST API는 REST를 기반으로 한 인터페이스
📖 API : 다른 소프트웨어 서비스를 제공하기 위한 소프트웨어 인터페이스
💡 REST API의 구성
- 자원 - URI
- 행위 - HTTP 메서드
- 표현 - JSON, XML
💡 REST API의 작동방식
- 클라이언트가 URI로 식별한 자원에 대해 HTTP메서드(POST, GET 등)를 사용해 REST API로 요청한다.
- REST API가 HTTP 요청 메시지에 실려 서버에 전달된다.
- 서버에서 수신한 HTTP 요청 메시지를 확인해 처리하고 HTTP 응답을 반환한다.
응답에는 요청에 대한 처리 성공 여부와 정보를 포함 - 응답 메시지는 자원에 대한 정보를 JSON 또는 XML 형태로 포함한다.
클라이언트는 해당 형태의 정보를 수신한다.
🔍 RESTful
REST규칙을 지키며 API를 제공하는 서비스를 RESTful하다고 한다.
· 자원에 대한 행위는 HTTP메서드로 나타내며, HTTP 메서드나 행위에 대한 표현이 URI에 들어가면 안된다.
· HTTP 메서드는 명시적이어야한다.(POST는 생성, GET은 조회, PUT은 업데이트, DELETE는 삭제)
· URI는 슬래시(/)로 계층 관계를 표현하고, URI마지막에 슬래시가 들어가면 안된다.
· URI 경로에는 언더바를 사용하면 안되고, 소문자 사용을 지향한다.
HTTP 메서드
클라이언트가 요청을 보낼 때 요청에 포함된다. 요청의 종류와 목적을 나타낸다.
- POST : 데이터 생성
- GET : 데이터 조회
- PUT : 데이터 갱신
- DELETE : 데이터 삭제
- PATCH : 데이터를 일부 갱신
- HEAD : 데이터 조회(HTTP메시지에 바디를 포함하지 않고 헤더로만 응답)
- TRACE : 클라이언트의 요청 메시지를 그대로 반환(쿠키, 세션 값 포함해 응답)
- CONNECT : 요청한 자원을 양방향으로 연결하는 데 사용, SSL을 사용하는 웹사이트에 접속 할 수 있다.
- OPTION : 서버가 지원하는 HTTP메서드를 메시지 헤더에 포함해 응답
'[ STUDY ] > CS' 카테고리의 다른 글
[ 데이터베이스 ] 관계형 데이터베이스 (1) | 2024.11.15 |
---|---|
[ 데이터베이스 ] 데이터베이스의 종류 (1) | 2024.11.15 |
[ 컴퓨터 네트워크 ] HTTP, HTTPS (0) | 2024.11.13 |
[ 컴퓨터 네트워크 ] TCP와 UDP (3) | 2024.11.13 |
[ 컴퓨터 네트워크 ] 네트워크 계층 (0) | 2024.11.12 |