RestFul 을 알려면, Rest 에 관하여 알아야 합니다.
REST 란?
- REST(Representational State Transfer) 네트워크 아키텍처 원칙을 기반으로 한 웹 서비스 디자인 방식입니다. REST 는 리소스를 기반으로 한 설계 철학을 따르며, URI을 통해 식별됩니다.(리소스 기반 URL) --> 쉽게 말해, REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이고, 이미지나 텍스트 같은 자원들을 JSON 혹은 XML 형식으로 URL 통해 주고 받는 것이라고 이해하시면 편할 것 같습니다!
REST 의 주요원칙
- Client–server 구조 : 클라이언트와 서버는 서로 독립적이어야 하며, 클라이언트는 url만 알아야 한다. 그리고, 클라이언트와 서버의 인터페이스가 변경되지 않는 한, 이 둘은 독립적으로 개발되거나 대체될 수 있게 유지해야합니다. (관심사의 명확한 분리).
- Stateless(무상태성) : 각 요청은 독립적이며, HTTP 요청에 대한 어떤 것도 저장하지 않습니다.(필수적인 것 빼고) 클라이언트의 모든 정보는 요청에 포함되어야 합니다.
- Cacheable : 서버는 Response cache-control 헤더에 해당 요청이 캐싱이 가능한 지에 대한 여부를 제공해야 합니다. -> 클라이언트는 Response를 캐싱하여 서버와 클라이언트 간의 상호작용을 줄이고, 성능과 서버 가용성을 늘릴 수 있습니다.
- Layered system(다중 계층): REST는 다중 계층 구조를 가질 수 있도록 허용합니다.(API 서버와 데베 서버 따로 두는 느낌) 레이어는 자기와 통신하는 컴포넌트 외 레이어에 대해서는 정보를 얻을 수 없습니다.(의존성 분리)
- Code on demand (optional): 서버가 클라이언트에서 실행시킬 수 있는 로직을 전송하여 클라이언트의 기능을 확장시킬 수 있습니다. 이를 통해 클라이언트가 사전에 구현해야하는 기능의 수를 줄여 간소화시킬 수 있습니다.
- Uniform interface(일관된 인터페이스) :
- identification of resources : 요청 시 개별 자원을 식별할 수 있어야함
- manipulation of resources through representations : 어떤 자원에 대헤 작업하기 위한 적절한 표현과 메타데이터를 충분히 갖추고 있다면, 서버는 해당 자원을 변경, 삭제할 수 있는 정보를 가지고 있단 의미
- self-descriptive messages : 자신을 어떻게 처리해야하는지 정보를 포함해야함
- hypermedia as the engine of application state : 단순히 결과 뿐만이 아니라 결과에 대한 정보를 포함해야 함
결론
이러한 Rest의 주요 원칙을 준수하여 서비스를 제공하는 것이 RestFul 입니다.
다음 포스팅에서 RestFul URl 설계규칙과 HTTP 메서드에 대해 다뤄보겠습니다!!
'스프링 > 개념' 카테고리의 다른 글
Spring 예외처리 기본 원리와 어노테이션 (0) | 2024.09.09 |
---|---|
계층형 패키지 구조 vs 도메인형 패키지 구조 (0) | 2024.09.09 |
HTTP 상태 코드 정리 (0) | 2024.09.09 |
HTTP 메서드에 관해서 (0) | 2024.09.09 |
REST API 설계 규칙! (0) | 2024.09.09 |