Post

[API] REST API란?

[API] REST API란?

서비스 간의 데이터 교환은 API(Application Programming Interface)를 통해서 가능합니다. 그중에서도 가장 널리 사용되는 API 설계 원칙 중 하나가 REST입니다. 이번 글에서는 REST API가 무엇인지, 그리고 왜 중요한지 알아보겠습니다.

API란?


API는 Application Programming Interface의 약자로, 소프트웨어 애플리케이션 간에 상호 작용할 수 있도록 도와주는 인터페이스입니다. 쉽게 말해, API는 두 개의 소프트웨어가 서로 소통할 수 있게 해주는 일종의 계약이라고 할 수 있습니다. 이 계약을 통해, 한 소프트웨어는 다른 소프트웨어의 기능을 사용할 수 있습니다.

예를 들어, 어떤 웹 애플리케이션이 구글 맵을 사용해 위치를 표시하고자 한다면, 해당 애플리케이션은 구글 맵 API를 통해 지도 데이터를 요청하고, 응답받은 데이터를 화면에 표시할 수 있습니다. 이처럼 API는 서로 다른 시스템 간의 상호작용을 가능하게 함으로써, 소프트웨어 개발의 유연성과 확장성을 크게 향상시킵니다.


REST란?


REST(Representational State Transfer)는 2000년 로이 필딩(Roy Fielding)이 제안한 아키텍처 스타일입니다. REST는 주로 웹에서 자원을 효과적으로 관리하고 교환하기 위해 설계되었습니다. REST의 핵심 개념은 리소스(Resource)입니다. 리소스는 웹에서 식별 가능한 모든 것을 의미하며, 각 리소스는 고유한 URI(Uniform Resource Identifier)로 식별됩니다.


REST API의 구성 요소

REST API는 클라이언트-서버 구조를 기반으로 하며, 다음과 같은 주요 요소들로 구성됩니다:

  • 리소스 기반

    각 리소스는 고유한 URI로 식별됩니다. 예를 들어, 사용자의 정보를 얻고 싶다면 /users/{user_id}와 같은 URI로 접근할 수 있습니다.

  • HTTP 메서드

    REST API는 HTTP 프로토콜을 사용하며, CRUD(Create, Read, Update, Delete) 작업을 HTTP 메서드를 통해 수행합니다.

    • GET

      리소스를 조회할 때 사용

    • POST

      리소스를 생성할 때 사용

    • PUT

      리소스를 업데이트할 때 사용

    • DELETE

      리소스를 삭제할 때 사용

  • 무상태성(Stateless)

    REST API는 무상태성을 유지합니다. 즉, 서버는 각 요청을 독립적으로 처리하며, 이전 요청의 상태를 저장하지 않습니다. 클라이언트는 필요한 모든 정보를 요청에 포함시켜야 합니다.

  • 캐싱(Caching)

    REST API는 HTTP의 캐싱 메커니즘을 활용하여 성능을 향상시킬 수 있습니다. 클라이언트는 서버로부터 받은 응답을 캐시하고, 필요할 때 다시 사용함으로써 서버 부하를 줄일 수 있습니다.

  • 표준화된 데이터 형식

    REST API는 주로 JSON(JavaScript Object Notation) 또는 XML(Extensible Markup Language)과 같은 표준화된 형식으로 데이터를 교환합니다. JSON은 가볍고, 읽기 쉬우며, 웹과 모바일 애플리케이션에서 많이 사용됩니다.


REST API의 장단점


  • 장점

    • 확장성

      REST API는 클라이언트와 서버 간의 의존성이 낮기 때문에 시스템의 확장이 용이합니다.

    • 유연성

      다양한 클라이언트(예: 웹 브라우저, 모바일 앱, IoT 기기)에서 REST API를 사용하여 데이터를 쉽게 교환할 수 있습니다.

    • 표준화

      REST는 HTTP 표준을 따르므로, 이미 많은 개발자들이 익숙한 방식으로 API를 설계하고 사용할 수 있습니다.


  • 단점

    • 복잡한 연산

      대규모 데이터나 복잡한 연산을 처리할 때 REST는 비효율적일 수 있습니다.

    • 버전 관리

      REST API의 URI가 고정되기 때문에, API의 버전 관리가 복잡할 수 있습니다.

    • 무상태성의 한계

      무상태성은 확장성과 유지보수 측면에서는 이점이 있지만, 클라이언트가 많은 데이터를 지속적으로 전송해야 할 때 비효율적일 수 있습니다.


읽어주셔서 감사합니다. 😊

Reference
ChatGPT - OpenAI

This post is licensed under CC BY 4.0 by the author.