본문 바로가기

HTTP

REST API

반응형

1. REST API란?

REST (Representational State Transfer) API는 웹 응용 프로그램에서 사용되는 일반적인 소프트웨어 디자인 패턴 중 하나이다. 이 패턴은 네트워크 아키텍처에서 자원을 정의하고 해당 자원에 대한 HTTP 요청을 처리하는 방법을 제공한다.

 

2. REST API 특징

1) 자원 (Resource)
모든 것이 자원이며, 각 자원은 고유한 식별자 (URI)를 가지고 있다.

2) 메서드 (Method)
HTTP 메서드 (GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 액션을 수행한다.

3) 메시지 (Message)
HTTP 메시지를 통해 데이터를 전송한다.

4) 표현 (Representation)
자원의 상태를 JSON, XML, HTML 등과 같은 형식으로 나타낸다.


[ REST API 장점 ]

1) 간결하고 직관적인 디자인
HTTP 메서드를 사용하여 자원에 대한 액션을 수행하기 때문에, REST API는 간결하고 직관적인 디자인을 가지고 있다.

2) 높은 확장성
REST API는 클라이언트-서버 모델을 기반으로 하기 때문에, 서버와 클라이언트가 분리되어 있어 서로 독립적으로 확장이 가능하다.

3) 유니버설한 인터페이스
REST API는 HTTP를 사용하기 때문에, 다양한 플랫폼에서 사용이 가능하다.

[ REST API 단점 ]

1) 명세가 없음
REST API는 자유로운 디자인을 가질 수 있기 때문에, 서로 다른 API가 동일한 자원을 다른 방식으로 표현할 수 있다.

2) 보안성
REST API는 기본적으로 HTTP를 사용하기 때문에, 보안성이 떨어질 수 있습니다. HTTPS를 사용하여 보안성을 향상시켜야 한다.

 

3. REST API 제약 조건

REST API 디자인은 아래와 같은 제약 조건을 따르며, 이러한 제약 조건으로 REST API는 높은 확장성과 유연성을 가지며, 다양한 클라이언트와 서버 간의 상호 운용성을 보장할 수 있다.

1) 클라이언트-서버 (Client-Server)
클라이언트와 서버가 독립적으로 발전하며, 각각의 역할을 분리하는 것을 의미한다. 클라이언트는 사용자 인터페이스 및 사용자 입력 처리를 담당하고, 서버는 데이터 저장 및 처리를 담당한다.

2) 상태 없음 (Stateless)
서버는 각각의 요청을 개별적으로 처리하고, 클라이언트의 상태를 저장하지 않는다. 이로 인해 서버는 더 많은 요청을 처리할 수 있다.

3) 캐시 처리 가능 (Cacheable)
서버는 응답을 캐시할 수 있어야 합니다. 이로 인해 클라이언트는 서버로부터 다시 응답을 받을 필요 없이 캐시된 응답을 사용할 수 있다.

*GET, PUT, DELETE 메소드가 가지고 있는 멱등성 성질로 캐시 처리 가능함. (POST: 멱등성 X)

4) 계층화 (Layered System)
클라이언트는 서버와 직접적으로 통신하지만, 서버는 다른 서버와 통신하거나, 로드 밸런싱, 암호화 등의 추가 기능을 제공하는 다른 중간 계층(Proxy, Gateway)을 사용할 수 있다.

5) 인터페이스 일관성 (Uniform Interface)
인터페이스는 일관성 있게 설계되어야 한다. 이는 자원 식별, 메시지 전송을 위한 표준화된 방식을 사용하고, 자원에 대한 액션을 나타내는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하는 것을 의미한다.

6) 자기 서술적 메시지 (Self-descriptive Messages)
메시지는 자신의 컨텍스트를 명확히 이해할 수 있도록 설계되어야 한다. 메시지에는 메시지 자체를 해석할 수 있는 충분한 정보가 포함되어야 한다.

7) HATEOAS (Hypermedia as the Engine of Application State)
서버는 클라이언트에게 다음 단계의 동작을 수행할 수 있는 링크를 제공해야 한다. 이를 통해 클라이언트는 API의 다양한 기능을 자유롭게 탐색할 수 있다.

반응형

'HTTP' 카테고리의 다른 글

캐시 파헤치기  (1) 2025.02.06
세션 파헤치기  (0) 2025.02.06
토큰 파헤치기  (0) 2025.02.06
쿠키 파헤치기  (0) 2025.02.06
HTTP란?  (0) 2023.04.12