REST?
Representational State Transfer의 약자. HTTP 통신을 활용하기 위해 고안된 아키텍처.
클라이언트는 URI로 표현된 자원을 HTTP 메서드를 이용해 CRUD 연산을 할 수 있다.
자원을 명시해 연산을 수행하고 상태를 주고 받는 것이다.
REST의 특징
- 일관된 인터페이스 : URI를 HTTP메서드로 조작하는 일관된 인터페이스를 사용. HTTP를 따르는 모든 플랫폼에서 REST사용 가능
- 클라이언트-서버 구조 : 클라이언트와 서버 간에 요청-응답의 독립적인 구조를 갖는다. 클라이언트는 서버에 요청을 보내고 응답 대기. 서버는 자원을 가지고 있고 클라이언트의 요청에 응답
- 무상태성 : 서버에서는 클라이언트의 요청을 저장/관리 하지 않는다. 서버는 클라이언트의 요청에 대한 처리와 응답만.
- 캐시 가능 : HTTP 표준을 사용하므로 클라이언트는 이전에 서버로 부터 받은 응답을 저장 및 재사용하는 캐싱 사용. 캐싱은 서버 부하를 줄이고 클라이언트는 빠른 응답을 받을 수 있다.
- 자체 표현 구조 : REST API는 자원, 행위, 표현으로 구성되어 메세지를 보고 어떤 요청인지 알 수 있다.
- 계층형 구조 : REST 서버는 다중 계층으로 구성될 수 있어 보안,암호화 같은 계층을 추가해 유연하게 확장 가능.
URI : 인터넷에 있는 자원 주소. 인터넷 프로토콜에 항상 붙어다닌다.
URL : 인터넷에서 자원의 위치를 알 수 있는 규약. 웹사이트 주소와 인터넷의 모든 자원을 나타낼 수 있다.
URN : 자원의 위치 정보가 아닌 실제 자원을 특정.
REST API
REST를 기반으로한 인터페이스.
REST API구성
자원 - URI
행위 - HTTP 메서드
표현 - json, xml 등
클라이언트 -> GET/ DELETE/ PUT/ POST -> REST API -> HTTP 요청 -> 서버
클라이언트 <- json/ xml <- REST API <- HTTP 응답 <- 서버
RESTful? - REST규칙을 지키며 API를 제공하는 서비스.
RESTful 규칙 준수 사항
- 자원에 대한 행위는 HTTP 메서드로 나타내며 메서드나 행위, 표현이 URI에 들어가면 안된다.
- HTTP 메서드는 명시적이어야 함. ex) POST메서드로 Ceate + Update 같은 연산을 같이 하면 명시적이라 할 수 없음.
- URI 경로는 슬래시/ 로 계층 관계 표현. 마지막에 /가 들어가면 안됨.
- URI 경로에는 언더바_를 사용하면 안되고 소문자 사용을 지향함.
HTTP 메서드?
클라이언트가 요청을 보낼 때 요청에 포함된 HTTP 메서드는 아래와 같다.
- POST : 데이터 생성
- GET : 데이터 조회
- PUT : 데이터 갱신
- DELETE : 데이터 제거
HTTP외 메서드
- PATCH : 데이터 일부 갱신
- HEAD : 데이터 조회, HTTP메세지에 바디 포함하지 않고 헤더로만 응답
- TRACE : 클라이언트 요청 메세지를 그대로 반환(루프백 메세지)하면서 쿠키 및 세션 값을 포함하여 응답
- CONNECT : 요청한 자원을 양방향으로 연결하는데 사용. SSL을 사용하는 웹 사이트에 접속 가능
- OPTION : 서버가 지원하는 HTTP메서드를 메세지 헤더에 포함하여 응답
'CS > 네트워크' 카테고리의 다른 글
네트워크 - 정리 (0) | 2024.06.20 |
---|---|
네트워크 - HTTP/S (0) | 2024.06.19 |
네트워크 - OSI 7계층, TCP/IP, TCP/UDP (0) | 2024.06.19 |