REST(Representational State Transfer)
휴식이 넘치는 api인줄..
자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태를 주고받는 모든 것
- 자원 : 해당 소프트웨어가 관리하는 모든 것
- 자원의 표현 : 그 자원을 표현하기 위한 이름
- DB의 학생 정보가 자원, ‘students’ : 자원의 표현
- HTTP URI(Uniform Resource Identifier)를 통해 자원 명시
- HTTP Method(POST, GET, PUT DELETE, PATCH 등) → 자원(URI)에 대한 행위(Verb)
- 해당 URI에 대한 CRUD Operation을 적용
💡 **CRUD :** 컴퓨터 SW가 가지는 기본적인 데이터 처리 기능. Create(POST), Read(GET), Update(PUT, PATCH), Delete(DELETE)
REST 구성 요소
특징
- Server-Client
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Uniform Interface(인터페이스 일관성)
장점
- HTTP 프로토콜 인프라 → 별도의 인프라 구축 x
- 프로토콜의 표준을 최대한 활용, 여러가지 장점을 함께 가져갈 수 있음.
- http를 따르는 모든 플랫폼에서 활용 가능
- Hypermedia API의 기본을 지키며 범용성 보장
- REST API 메시지가 의도하는 바를 명확하게 나타냄 → 의도하는 바를 쉽게 파악 가능
- 서버와 클라이언트 역할 명확히 분리
- 여러가지 서비스 디자인에서 생길 수 있는 문제 최소화
단점
- 표준 정의 필요
- http method 형태가 제한적임
- 브라우저 테스트가 많은 서비스라면 url보다 헤더 정보 값 처리 → 전문성 요구됨
- 구형 브라우저 호환 x → 익스플로러
REST API
REST의 원리를 따르는 API
- 명사, 소문자
http ://kchabin.velog/spring-boot
- 마지막 슬래시 x
- 언더바 대신 하이픈
- 파일 확장자 포함 x
- 행위 포함 x
RESTful
REST API의 설계 규칙을 올바르게 지킨 시스템.
예) 모든 CRUD 기능을 POST로 처리하거나 URL 규칙을 제대로 지키지 않은 API는 REST API를 사용하였으나 RESTful 하지 못한 시스템이다.
참고 링크