CS

REST API

망재이 2023. 8. 3. 14:10

★ REST ?

- Representational State Transfer

- 분산하이퍼미디어 시스템 아키텍처의 한 형식

- 자원에 이름을 규정하고 URI에 명시해 HTTP 메서드를 통해 해당 자원의 상태를 주고받는 것

 

 

★ REST API ?

- REST 아키텍처를 따르는 시스템/애플리케이션 인터페이스

- REST 아키텍처를 구현하는 웹 서비스를 'RESTful하다'라고 표현

 

 

★ REST 특징

⭐︎ 유니폼 인터페이스

- 일관된 인터페이스

- HTTP 표쥰 전송 규약을 따르기 때문에 어떤 프로그래밍 언어로 만들어졌느냐와 상관없이 타 언어, 플랫폼, 기술 등과 호환해 사용할 수 있음

 

⭐︎ 무상태성(Stateless)

-  서버에 상태 정보를 따로 보관하거나 관리하지 않는다는 의미

- 서버는 클라이트가 보낸 요청에 대해 세션이나 쿠키 정보를 보관하지 않고 개별적으로 처리

- 서버가 불필요한 정보를 관리하지 않으므로 비즈니스 로직의 자유도가 높고 설계가 단순

 

⭐︎ 캐시 가능성

- HTTP 표준을 그대로 사용하므로 HTTP의 캐싱 기능을 적용할 수 있음

- 응답과 요청이 모두 캐싱 가능한지 명시가 필요하며, 캐싱이 가능한 경우 클라이언트에서 캐시에 저장해두고 같은 요청에 대해서는 해당 데이터를 가져다 사용

- 서버의 트랜잭션 부하가 줄어 효율적이며 성능이 개선

 

⭐︎ 레이어 시스템

- 네트워크 상의 여러 계층으로 구성될 수 있음

 

⭐︎ 클라이언트-서버 아키텍처

- REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계

- 의존성을 낮추는 기능을 함

 

 

 ★ REST의 URI 설계 규칙

- UIR의 마지막에는 '/'를 표함하지 않는다

http://localhost.com/product (O)
http://localhost.com/product/ (X)

- 언더바(_)는 사용하지 않고 하이픈(-)을 사용 (하이픈은 리소스 이름이 길어지면 사용)

http://localhost.com/provider-company  (O)
http://localhost.com/provicer_company  (X)

- URL에는 행위(동사)가 아닌 결과(명사)를 포함

http://localhost.com/product/123  (O)
http://localhost.com/delete-product/123  (X)

- URI는 소문자로 작성 (일부 웹 서버의 운영체제는 리소스 경로의 대소문자를 다른 문자로 인식하기 때문)

- 파일의 확장자는 URI에 포함하지 않음

728x90