카테고리 없음

#25 RESTful API

kmsoon 2024. 6. 4. 15:54

RESTful API는 웹 서비스의 설계 원칙 중 하나로, Representational State Transfer(REST) 아키텍처 스타일을 따르는 API를 말한다. RESTful API는 자원을 정의하고 해당 자원에 대한 상태를 전송하는 방식으로 작동한다. REST는 HTTP 프로토콜을 기반으로 하며, 클라이언트와 서버 간의 통신을 단순화하고, 확장성과 유지보수성을 높이기 위해 설계되었다.

 

 

 

REST의 핵심 개념

  1. 자원(Resource): 모든 데이터는 자원으로 간주되며, URI(Uniform Resource Identifier)를 통해 식별한다. 예를 들어, 특정 사용자의 정보를 얻기 위한 자원은 /users/123과 같이 표현할 수 있다.
  2. 표현(Representation): 자원은 다양한 형태(JSON, XML 등)로 표현할 수 있다. 클라이언트는 서버로부터 자원의 표현을 요청하고, 서버는 이를 응답으로 제공한다.
  3. 상태 전이(State Transfer): 클라이언트와 서버 간의 상호작용을 통해 자원의 상태를 전이한다. 클라이언트는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원의 상태를 변경하거나 조회할 수 있다.

 

 

 

HTTP 메서드와 CRUD 연산의 매핑

  • GET: 자원의 조회 (Read)
  • POST: 자원의 생성 (Create)
  • PUT: 자원의 전체 수정 (Update)
  • PATCH: 자원의 일부 수정 (Update)
  • DELETE: 자원의 삭제 (Delete)

 

 

 

 

RESTful API의 설계 원칙

  1. 클라이언트-서버 구조: 클라이언트와 서버가 서로 독립적으로 동작한다. 클라이언트는 요청을 보내고 서버는 응답을 처리한다.
  2. 무상태성(Stateless): 각 요청은 독립적이며, 서버는 이전 요청의 상태를 저장하지 않는다. 필요한 모든 상태 정보는 요청에 포함되어야 한다.
  3. 캐시 가능(Cacheable): HTTP 응답은 캐시 가능해야 하며, 클라이언트는 이를 통해 성능을 향상시킬 수 있다.
  4. 계층화 시스템(Layered System): 클라이언트는 중간 서버(예: 로드 밸런서, 캐시 등)를 통해 서버와 상호작용할 수 있다. 이는 시스템의 확장성과 보안성을 높인다.
  5. 통합 인터페이스(Uniform Interface): 일관된 인터페이스를 제공하여 시스템의 아키텍처 단순성을 유지한다. 이는 URI, HTTP 메서드, 상태 코드 등을 일관되게 사용하는 것을 포함한다.
  6. 코드 온 디맨드(Optional): 서버는 필요에 따라 클라이언트에 코드를 전송하여 실행할 수 있다. 이는 선택적인 기능이다.

 

 

 

 

RESTful API의 예시

간단한 예시로, 블로그 포스트를 관리하는 RESTful API를 살펴본다.

 

GET /posts: 모든 블로그 포스트를 조회한다.

GET /posts/1: ID가 1인 특정 블로그 포스트를 조회한다.

POST /posts: 새로운 블로그 포스트를 생성한다

{
  "title": "새로운 포스트",
  "content": "포스트 내용"
}

 

PUT /posts/1: ID가 1인 블로그 포스트를 수정한다

{
  "title": "수정된 포스트",
  "content": "수정된 내용"
}

DELETE /posts/1: ID가 1인 블로그 포스트를 삭제한다

 

 

 

 

 

 

RESTful API의 장점

  • 단순성: HTTP 프로토콜을 기반으로 하여 익숙한 메서드와 상태 코드를 사용한다.
  • 확장성: 클라이언트와 서버의 역할이 명확하게 구분되어 독립적으로 확장이 가능하다.
  • 유연성: 다양한 클라이언트(웹, 모바일 등)와 쉽게 통합될 수 있다.

RESTful API의 단점

  • 복잡한 관계: 자원 간의 복잡한 관계를 표현하는 데 한계가 있을 수 있다.
  • 무상태성의 제약: 모든 요청이 독립적이어야 하기 때문에, 상태를 유지해야 하는 애플리케이션에 부담이 될 수 있다.

RESTful API는 웹 서비스의 표준으로 널리 사용되며, 이를 잘 설계하고 구현하는 것은 현대 웹 개발에서 중요한 부분이다.