[개발 상식] API, REST, RESTful API의 의미와 설계규칙

 

이미지 출처 : https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCeYwYIcTd0wDIQeXnyJBzzbxIvGigWPyziw&usqp=CAU

저에겐 API라는게 개발 공부를 하면서 많이 사용하고, 들어본 것이지만 설명해보라 한다면 어떻게 설명해야 될지 잘 모르겠는 그런 개념 입니다.

그래서 이번에는 API가 무엇인지 정확하게 알고, RESTful API에 대해서 알아보도록 합시다!

🤔API란 무엇일까?

  • API는 정의 및 프로토콜 집합을 사용하여, 두 소프트웨어 구성 요소가 통신할 수 있게 하는 메커니즘 입니다.
  • Application Programming Interface의 줄임말 입니다. 이는 고유한 기능을 가진 소프트웨어(Application)사이의 상호 서비스 계약(Interface)라고 할 수 있습니다.

🤔REST API?

  • 오늘날 웹에서 가장 많이 사용되고 유연한 API
  • REST (Representational State Transfer) 는 클라이언트가 서버 데이터에 엑세스 하는데 사용할 수 있는 GET, PUT, DELETE등의 함수 집합을 정의합니다.
  • 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환합니다.

😀REST API의 구성요소

  1. 자원 (Resources) : 모든 것을 고유한 식별자인 URI로 표현합니다.
  2. 행위 (Methods) : HTTP 메서드를 사용하여 해당 자원에 대한 행동을 표현합니다. (GET, POST, PUT, DELETE) 등이 있습니다.
  3. 표현 (Respresentations) : 일반적으로 JSON, XML등의 데이터 형식을 사용합니다.

😀Rest API의 특징

  1. 무상태 (Stateless) : 서버는 각 요청을 독립적으로 처리하며 클라이언트의 상태를 저장하지 않습니다. 모든 필요한 정보는 요청 자체에 포함되어야 합니다.
  2. 클라이언트-서버 구조 : 클라이언트와 서버간의 명확한 역할 분리를 지향합니다.
  3. 캐시 가능성 : HTTP의 표준 기능을 이용하여 클라이언트 서버의 응답을 캐시할 수 있습니다.
  4. 계층 구조 : 서버는 다른 서버에게 요청을 전달하거나 데이터베이스 등의 다른 서비스를 이용할 수 있습니다. 이를 통해 시스템의 구조를 단순화하고, 재사용성과 유지보수성이 향상됩니다.
  5. HATEOAS (Hypermedia as the Engine of Application State) : REST의 가장 중요한 원칙으로 서버가 클라이언트에게 리소스 관련 링크를 제공함으로써 클라이언트가 서버와 동적인 상호작용이 가능하도록 하는 것입니다.
{
	"routes" : [
        "label": "홈",
        "href": "<http://localhost:8080>",
      },
      {
        "label": "지도",
        "href": "<http://localhost:8080/map>",
      },
      {
        "label": "내 프로필",
        "href": "<http://localhost:8080/profile>",
      },
	]
}

HATEOAS가 적용된 응답 예

🤔그렇다면 RESTful API가 무엇일까?

RESTful API는 REST API와 종종 혼용되어 사용되지만, 차이가 있다면 RESTful API는 엄격하게 REST API의 원칙을 따르며 HATEOAS를 적용하여 클라이언트와 서버간의 상호작용을 보다 유연하고 효과적으로 가능하게 만들어 준 것이고, 반면 REST API는 REST 원칙을 일부 따르지만 완전히 준수하지 않을 수 있습니다.


😉결론!

RESTful API는 REST의 원칙을 엄격하게 따른 REST API라는 것이다! 혼용하여 사용될 정도로 큰 차이가 없다는 것!

출처

API란 무엇인가요? - 애플리케이션 프로그래밍 인터페이스 설명 - AWS

 

API란 무엇인가요? - 애플리케이션 프로그래밍 인터페이스 설명 - AWS

GraphQL은 API용으로 특별히 개발된 쿼리 언어로서, 클라이언트에게 요청한 데이터만 제공하는 것을 우선으로 합니다. 또한 API를 빠르고 유연하며 개발자 친화적으로 만들도록 설계되었습니다. RES

aws.amazon.com

RESTful API란 무엇인가요? - RESTful API 설명 - AWS

 

RESTful API란 무엇인가요? - RESTful API 설명 - AWS

Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애

aws.amazon.com