Computer Science/CS

[CS] REST API

owls 2023. 12. 7. 18:39
728x90

REST API

Representational State Transfer

분산 네트워크 상에서 자원(리소스)을 표현하고 그 상태를 전송하는 아키텍처 스타일입니다. 

 

REST API란 서버 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식입니다.

클라이언트에서 정보를 요청하면 서버는 특정 기기에 종속되지 않고 모든 기기에 통용할 수 있는 JSON데이터를 응답으로 보냅니다. 

서버가 클라이언트의 요청에 체계적으로 대응할 수 있어서 서버 프로그램의 재사용과 확장성이 좋아집니다.

 

REST

HTTP URL로 서버의 자원을 명시하고, HTTP 메서드(POST, GET, PATCH/PUT, DELETE)로 해당 자원에 대해 CRUD하는 것을 말합니다.

 

API

클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스입니다.

REST API특징

- 자원(Resources)

REST에서는 모든 자원을 고유한 식별자(URI)를 통해 표현합니다.
웹의 자원은 각각의 URI로 식별되며(/users), 이러한 자원은 서버에 의해 관리됩니다.

 

- 표현(Representation)

자원의 상태는 다양한 표현으로 나타낼 수 있습니다. 
주로 JSON또는 XML형식의 데이터를 사용합니다.
클라이언트는 이러한 표현을 통해 서버와 상호작용 합니다.

 

- 상태 전이(Stateless)

REST는 상태를 유지하지 않는(Stateless)특징을 가지고 있습니다.
각 요청은 모든 필요한 정보를 포함하고 있어야 하며, 
서버는 요청을 처리하기 위해 필요한 정보만을 이용합니다.
세션 상태는 서버에 저장되지 않고 클라이언트에 의해 유지되어야 합니다.

 

- 인터페이스 일관성(Uniform Interface)

REST는 일관된 인터페이스를 제공합니다. 
자원에 대한 표준화된 인터페이스로서, CRUD연산을 통해 자원을 조작합니다.
이로써 서버와 클라이언트 간의 상호 운용성을 높입니다.

위의 4가지 특징(혹은 self-descriptive, HATEOAS)을 엄격하게 지키는 API를 보고 RESTful API라고 합니다.

 

자원 식별

REST API의 좋은 예와 나쁜 예

API Good Bad
글 조회 GET /posts/{Id} /GET /get/posts/{Id}
글 생성 POST /posts POST /posts/create
글 삭제 DELETE /posts/{id} DELETE /posts/delete/{id}

HTTP메서드로 자원에 대한 행동을 URI로 나타내는 것은 적절하지 않습니다.

 

데이터 표현

JSON데이터는 자바스크립트 방식을 차용한 객체 표현식으로 key와 value쌍으로 이루어진 속성(property)로 구성됩니다.

{ "key" : "value"}

 

상태 전이

REST API는 서버가 클라이언트의 상태를 저장하지 않습니다.

HTTP메서드를 통해 클라이언트와 서버 간의 상태 전이를 일으켜 통신을 효과적으로 할 수 있도록 합니다.

 

인터페이스 일관성

REST API는 일관된 인터페이스를 제공하기 위해 HTTP메서드와 URI를 일관성 있게 사용합니다. 

POST /posts

PATCH /posts/{postId}

DELETE /posts/{postId}

와 같이 게시물 생성, 수정, 삭제 URI를 일관성 있게 사용합니다.

 

POST /posts/create

PATCH /posts/update/{postId}

는 올바르지 않는 방법입니다.

 

 


참고 자료

코딩 자율학습 스프링부트3 자바 백엔드 개발 입문 (길벗)

728x90