REST (Representational State Transfer) 는,
인터넷 상에서 클라이언트 어플리케이션들과 서비스들 간에서 상호작용하는 아주 평범한 방식입니다.
REST 는 어플리케이션과 웹 서비스들을 생성 할 때 고려하는 제한들의 집합입니다.
이러한 아키텍쳐 스타일은 편리한 웹 서비스를 쉽게 구축하도록 개발되었습니다.
REST 규칙들에 관심을 두고 작성된 서비스는 RESTful 이라고 부릅니다.
REST 는 프로토콜이나 표준이 아닙니다.
REST 는 주로 HTTP 의 최상위 단에서 작동되며,
HTTP 를 사용할 수 있는 하나의 방식입니다.
이는 표준이 아니지만, 유용한 추천의 집합입니다.
기준이나 표준은 아니지만,
REST
를 준수하는 것이 매우 유용하다는 의미이다.
Short history - 짧은 역사
2000년에, Roy Fielding 이라는 사람이,
"Architectural Styles and Network Architecture Design" 이라는 박사 논문을 출판했습니다.
이 논문에서, 그는 만약에 시스템이 확실한 여섯 개의 조건 을 만난다면,
사용하기 더 편리해 질 것이라는 아이디어를 제안했습니다.
그는 이러한 개념을 REST 라고 부릅니다.
Six REST principles - 여섯 개의 REST 원칙
밑의 여섯 개의 중요한 원칙들을 보장한다면, 당신은 RESTful 서비스를 작성 할 수 있습니다 :
1. Client-server interaction model - 클라이언트 서버 상호작용 모델
유저 인터페이스와 데이터 서버를 분리함으로서,
우리는 어플리케이션 연산들을 향상하고 단순화 할 수 있습니다.
2. Stateless - 불변성
클라이언트에서 서버로 가는 각각의 request 는 반드시 모든 중요한 정보를 포함하며,
서버에 저장되어 있는 어떠한 상태에도 의존하지 않습니다.
REST 에 따르면, 서비스는 이전 연산의 결과를 저장하지 않습니다.
간단히 말해서, 이는 "질문하고, 대답하고, 잊는다" 라는 컨셉에 따라 작동합니다.
3. Cacheable - 캐시 가능성
요청-응답 쌍은 캐시로 표시되어 유저 측(사이드) 에 저장 될 수 있습니다.
웹 페이지를 캐싱하는 것으로 유추해 볼 수 있습니다 :
만약에 페이지가 한 번 다운로드된다면, 서버에 다시 등록하지 않더라도 접근할 수 있습니다.
4. Uniform interface - 인터페이스 통합
REST 아키텍쳐는 이 아키텍쳐의 개발자 없이도 반드시 이해 가능할 수 있어야 한다고 지정했습니다.
5. Layered system - 계층 시스템
클라이언트 사이드가 메인 서버에 직접적으로 연결되어 있는지, 중간 서버에 연결되어 있는지 말할 수 없습니다.
6. Code on demand "optional" - 요구에 따른 코드 "선택사항"
request 시, 서비스는 클라이언트 사이드에서 실행 가능한 애플릿 혹은 스크립트를 제공해야 합니다.
실제로는, 매우 드물게 사용됩니다.
HTTP methods for RESTful services - RESTFul 서비스를 위한 HTTP 메서드
REST 개념 안에서,
리소스와 상호작용은 리소스의 URL 을 부름으로서 수행되며, 네 개의 기본적인 HTTP 메서드가 있습니다.
GET
, POST
, PUT
, DELETE
이러한 메서드들이 어떤 상황에서 사용되는지 자세히 고려 해 봅시다.
POST
POST
는 새로운 리소스를 생성하는 데 사용됩니다.
만약 리소스가 성공적으로 생성된다면,
HTTP 코드 201 (Created) 가 반환되며,
또한 생성된 리소스의 주소는 Location
헤더에 전달 됩니다.
GET
GET
은 리소스를 탐색하거나 읽기 위해 사용됩니다.
만약 GET
메서드가 성공적이며, 주소 에러들을 담고 있지 않다면,
리소스의 표현인 XML 혹은 JSON 을 HTTP 200 (OK) 상태 코드와 함께 반환합니다.
만약 에러가 난 경우,
주로 404
(Not Found) 나 400
(Bad Request) 코드를 반환합니다.
PUT
PUT
메서드는 ID 를 지정하여 리소스를 생성하거나, 이미 존재하는 리소스를 업데이트합니다.
만약 업데이트가 성공적이라면, 코드는 200 (OK) 입니다.
204 (NO CONTENT) 코드는 만약 응답 본문이 콘텐츠가 없이 전송된다면 반환됩니다.
DELETE
DELETE
메서드는 URI (ID) 지정으로 인해 식별된 리소스를 제거하는 데 사용됩니다.
만약 삭제가 성공적이라면, 200(OK) 코드를 반환하며,
함께 원격 리소스 데이터를 포함한 response body 를 반환합니다.
또한 response body 없이 204 (NO CONTENT) 를 사용 할 수 있습니다.
우리가 가상의 서점 웹 서비스를 가지고 이씨으며,
이 웹 서비스는 책을 관리하는 것을 리소스 메서드처럼 사용하고 있다고 묘사합니다.
서비스에 저장되어 있는 각각의 책은 스스로의 수학적 식별자를 가지고 있습니다.
그러므로 :
POST https://example.com/books/
는 새로운 책을 추가합니다.GET https://example.com/books/1
는 이미 존재하는 책을 가져옵니다.PUT https://example.com/books/1
은 주어진 ID 에 의해 책을 생성하거나 업데이트합니다.DELETE https://example.com/books/1
은 주어진 ID 로 이미 존재하는 책을 삭제합니다.
이것이 RESTful 웹 서비스가 작동하는 방식과 같습니다.
Conclusion - 결론
REST 는 풍부하면서도 쉬운 개념입니다.
이는 클라이언트/서버 연결을 조직하는 가장 평범한 방식 중 하나입니다.
REST 의 기본적인 여섯 가지 원칙들은 당신의 작업을 쉽게 만들어 주며,
웹 서비스를 구축하는 데 발생하는 평범한 문제들을 피하도록 도와 줄 수 있습니다.
words to remember
fairly : 꽤, 아주, 공정히
regard : 관심, 관련, 고려, 주시, 알다, 보다, 생각하다
Simply put : 간단히 말해서
analogy : 유추, 유사, 상사
seldom : 드물게, 좀처럼 ~ 않다.
hypothetical : 가상의
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Hashing: overview - 해싱: 개요 (2) | 2024.07.21 |
---|---|
Introduction to logging - 로깅 기초 소개 (3) | 2024.07.20 |
HTTP messages - HTTP 프로토콜 메세지 (0) | 2024.07.18 |
HTTP URL - HTTP 프로토콜 경로 (0) | 2024.07.18 |
MVC - MVC 패턴 (0) | 2024.07.16 |