-
[CS] REST APIComputer Science/CS 2023. 12. 7. 18:39728x90
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}
는 올바르지 않는 방법입니다.
참고 자료
728x90'Computer Science > CS' 카테고리의 다른 글
[CS] 컴퓨터 구성 요소 (0) 2024.02.29 [CS] HTTP HTTP/2 HTTPS QUIC (0) 2023.12.07 [CS] TCP/IP 송수신 원리 (0) 2023.12.04 [CS]웹 동작 과정 (0) 2023.12.04 [CS] URI, URL, URN (0) 2023.12.04