<목차>
1. REST ?
2. REST API 특징
3. REST API 규칙
[REST ?]
Representational State Transfer 의 약자로, WWW와 같은 분산 하이퍼미디어 시스템 아키텍처의 한 형태.
Resource에 이름을 규정하고, URI에 명시해 HTTP 메서드 (GET / POST / PUT / DELETE)를 통해 해당 자원을 표현하고 상태를 주고받는 것을 의미한다.
그렇다면, REST API 는 무엇인가?
REST Application Programming Interface 의 약자로, 애플리케이션에서 제공하는 인터페이스를 의미한다.
즉, REST API 는 REST 아키텍처를 따르는 시스템 또는 애플리케이션 인터페이스라고 볼 수 있으며, 이러한 REST 아키텍처를 구현하는 인터페이스를 RESTful API 라고 표현한다.
[REST API 특징]
- 유니폼 인터페이스 (일관된 인터페이스)
- REST 서버는 HTTP 표준 전송 규약을 따르기 때문에, 플랫폼/언어 등의 기술에 종속되지 않고 호환하여 사용할 수 있다는 것을 의미한다.
- 무상태성 (Stateless)
- 서버에 상태 정보를 따로 보관하거나 관리하지 않는 것을 의미한다.
클라이언트 Request에 대해, 세션이나 쿠키 정보를 별도로 보관하지 않으며, 각 요청을 개별적으로 처리한다. - 서버가 불필요한 정보를 관리하지 않음으로써, 비즈니스 로직의 자유도가 높고 설계가 단순해진다.
- 서버에 상태 정보를 따로 보관하거나 관리하지 않는 것을 의미한다.
- 캐시 가능성
- HTTP 표준을 그대로 사용하므로, HTTP의 캐싱 기능을 적용할 수 있다.
- 서버 트랜잭션 부하를 줄여 성능을 개선할 수 있다.
- 레이어 시스템 (Layered System)
- REST 서버는 여러 계층으로 구성될 수 있음을 의미한다.
그러나 클라이언트는 서버의 복잡도와 무관하게 서버와의 연결 포인트만 알면 사용할 수 있다.
- REST 서버는 여러 계층으로 구성될 수 있음을 의미한다.
- Client - Server Architecture
- REST 서버는 API를 제공하고, 클라이언트 사용자 정보를 관리하는 구조로 분리하여 설계함으로써 서로에 대한 의존성을 낮춘다.
[REST API 규칙]
규칙은 약속이다.
아래 내용과 다르게 소스를 작성할 수는 있으나, 가급적 지켜주는 것이 좋다.
- URI의 마지막에는 '/' 를 포함하지 않는다.
- http://127.0.0.1/product => O
- http://127.0.0.1/product/ => X
- URI 내, 언더바(_)를 사용하지 않는다.
- 길이가 길거나, 단어의 구분이 필요한 경우 하이픈(-) 를 사용한다.
- http://127.0.0.1/product-name => O
- http://127.0.0.1/product_name => X
- URL에는 명사를 사용한다.
- 동사(행위)는 HTTP 메서드로 표현한다.
- http://127.0.0.1/product => O (HTTP Method : DELETE)
- http://127.0.0.1/delete-product => X
- URI는 소문자로 작성한다.
- 일부 WEB 서버의 운영체제가 대소문자를 구분하여 인식하기 때문.
- 파일의 확장자는 URI 에 포함하지 않는다.
- HTTP에서 제공하는 Accept 헤더를 사용하는 것을 권장
다음 포스팅에서 Spring Boot 를 활용해 REST API 를 생성하는 과정에 대해 알아보자.
[참고 도서]
<스프링 부트 핵심 가이드>
저자 : 장정우
출판사 : 위키북스
'Spring & Spring boot' 카테고리의 다른 글
[Spring Boot] Rest Controller - 4. PUT (0) | 2024.07.24 |
---|---|
[Spring Boot] Rest Controller - 3. POST (2) | 2024.07.24 |
[Spring Boot] Rest Controller - 2. Get (0) | 2024.07.24 |
스프링 부트(Springboot)란? (0) | 2024.07.23 |
[Spring] 스프링 프레임워크란? (0) | 2024.07.15 |