티스토리 뷰
REST는 Representational State Transfer의 약자로 아키텍처 스타일이다. 아키텍처 스타일은 반복되는 문제 상황을 해결하는 도구이다. 이와 유사한 말로 아키텍처 패턴이 있는데 이는 반복되는 아키텍처 디자인을 의미한다. REST는 웹 서비스에서 자주 사용되는 HTTP 위에서 느슨하게 결합되는 애플리케이션 설계를 위한 스타일이다.
REST 제약 조건
REST 아키텍처는 6가지 제약조건으로 구성된다.
1. Uniform Interface
2. Client-Server
3. Stateless
4. Casheable
5. Layered System
6. Code on demand (선택)
이 제약조건을 따르는 API를 RESTful API라고 한다.
Uniform Interface
인터페이스는 일관적이여야 한다. 리소스에는 하나의 논리적인 URI만 존재해야 한다. 어떤 리소스에 접근하는데 2개 이상의 URI를 통해 접근할 수 있다면 일관적인 인터페이스가 아니다.
Client-Server
서버는 리소스를 관리하고, 클라이언트는 이 리소스을 사용하기 위에 서버에 접근한다. Client-Server 디자인 패턴에서 사용자 인터페이스 문제(클라이언트) 데이터 스토리지 문제(서버)가 분리되어 있다. 이렇게 관심사를 분리하여 각각 확장성이 개선된다.
Stateless
HTTP는 상태가 없는 프로토콜이라고 표현한다. Stateless는 클라이언트가 서버에 요청을 보냈을 때, 그 이전의 요청의 영향을 받지 않는 것이다. 로그인 같은 경우에는 세션 혹은 쿠키 정보로 로그인 상태를 유지할 수 있다.
Casheable
서버에서 받은 응답이 캐시가 가능한지 아닌지로 명시할 수 있어야 한다. HTTP 프로토콜에서는 이를 cache-control이라는 헤더에 명시한다.
Layered System
계층화된 시스템을 사용하여 구성 요소의 동작을 제한한다. 이런 계층적 구조로 시스템의 확장성이 향상된다. 클라이언트는 레이어의 유무를 알 수 없다.
Code on demand
이 제약은 선택 사항이다. REST는 코드를 다운로드 받고 실행하여 클라이언트의 기능을 확장할 수 있다. 이렇게 다운 받은 코드로 미리 구현해야 하는 기능의 수가 감소하고 클라이언트는 단순화 된다.
💡 REST는 HTTP와 같은 것이 아니다. REST는 아키텍처이고, HTTP는 프로토콜이다.
- Total
- Today
- Yesterday
- github
- 확장 함수
- string
- pm.test
- Kotlin In Action
- DGS Framework
- 네이버 2022 공채
- graphql
- postman
- git
- Basic Type
- 1차 인터뷰
- Squash and merge
- hashcode
- postman tests
- pm.expect
- solidity
- Python
- java
- 2차 인터뷰
- 코틀린
- 코딩테스트
- downTo
- go 특징
- postman collection
- squash merge
- python3
- Kotlin
- 주생성자
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |