💡REST란?
REST는 Representational State Transfer의 약자로 자원에 이름을 규정하여 행당 자원의 상태를 주고받는 것을 의미한다.
즉 REST란
- HTTP URI를 통해 자원에 이름을 규정하고
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다
CRUD Operaion
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT, PATCH)
Delete : 데이터 삭제(DELETE)
💡REST의 특징
유니폼 인터페이스
어떤 프로그래밍 언어인지 상관없이 플랫폼 및 기술에 종속되지 않고 타 언어, 플랫폼, 기술 등과 호환해 사용할 수 있다
무상태성
서버에 상태 정보를 따로 보관하거나 관리하지 않는다.
즉, 서버는 클라이언트가 보낸 요청에 대해 세션이나 쿠키 정보를 별도 보관하지 않는다.
클라이언트의 요청을 개별적으로 처리하기 때문에 불필요한 정보를 관리하지 않으므로
비즈니스 로직의 자유도가 높고 설계가 단순하다
캐시 가능성
HTTP 표준을 그대로 사용하므로 HTTP 캐싱 기능을 적용할 수 있다.
응답과 요청이 모두 캐싱 가능한지 명시가 필요하며 캐싱이 가능한 경우
클라이언트에서 캐시에 저장한다. 그렇기 때문에 서버의 트랜잭션 부하가 줄어
효율적이며 사용자 입장에서 성능이 개선된다
레이어 시스템
REST 서버는 네트워크 상의 여러 계층으로 구성될 수 있으며 서버의 복잡도와 관계없이 클라이언트는 서버와 연결되는 포인트만 알면 된다.
클라이언트-서버 아키텍처
REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계한다.
이 구성은 서로에 대한 의존성을 낮추는 기능을 한다.
💡REST API란
API는 Application Programming Interface의 약자로 애플리케이션이 제공하는 인터페이스를 의미한다.
API를 통해 서버 또는 프로그램 사이를 연결할 수 있다. REST API는 REST 구조를 따르는 시스템/애플리케이션 인터페이스라고 할 수 있으며 REST 구조를 구현하는 웹 서비스를 'RESTful하다'라고 표현한다.
💡REST API 설계 규칙
URI의 마지막에는 '/'를 포함하지 않는다.
옳은 예) http://localhost.com/product
잘못된 예) http://localhost.com/product/
언더바 대신 하이폰을 사용한다
옳은 예) http://localhost.com/product-name
잘못된 예) http://localhost.com/product_name
URL에는 행위(동사)가 아닌 결과(명사)를 포함한다
옳은 예) http://localhost.com/product
잘못된 예) http://localhost.com/delete-product
URI는 소문자로 작성해야 한다
옳은 예) http://localhost.com/product
잘못된 예) http://localhost.com/Product
파일의 확장자는 URI에 포함하지 않는다
옳은 예) http://localhost.com/image
잘못된 예) http://localhost.com/image.jpg
참고
[네트워크] REST API란? REST, RESTful이란? :: 히진쓰의 서버사이드 기술 블로그 (tistory.com)
도서-스프링부트 핵심 가이드
'개념 스터디' 카테고리의 다른 글
JPA? ORM? 하이버네이트? (0) | 2024.01.21 |
---|---|
MVC (0) | 2024.01.17 |
레이어드 아키텍처 (0) | 2024.01.14 |
관점 지향 프로그래밍(Aspect Oriented Programming, AOP) (1) | 2024.01.14 |
제어 역전(Inversion of Control, IoC)과 의존성 주입(Dependency Injection, DI) (0) | 2024.01.14 |