반응형
API는 "Application Programming Interface"의 약자로, 응용 프로그램 간의 상호 작용을 위한 규약이나 인터페이스를 말합니다. API는 소프트웨어 개발에서 중요한 역할을 합니다.
API는 서로 다른 소프트웨어 시스템이 상호 작용할 수 있도록 허용하고, 소프트웨어 컴포넌트 간의 통신을 용이하게 만들어 줍니다. API는 일련의 규칙과 프로토콜을 정의하여, 소프트웨어 개발자가 다른 시스템의 기능을 호출하고 사용할 수 있도록 합니다.
API는 다양한 형태로 제공될 수 있습니다. 예를 들어, 웹 API는 웹 응용 프로그램 간의 통신을 위한 인터페이스를 제공하며, 소프트웨어 라이브러리 API는 프로그래밍 언어에서 사용할 수 있는 함수와 클래스를 제공합니다. 또한, 운영 체제 API는 운영 체제에서 제공하는 기능을 개발자에게 노출시켜 주는 인터페이스를 의미합니다.
API는 다른 소프트웨어 시스템과의 통합을 용이하게 하며, 개발자들이 소프트웨어를 더 쉽고 효율적으로 개발할 수 있도록 돕습니다. 많은 회사와 서비스들이 API를 제공하여 개발자들이 자신들의 플랫폼과 상호 작용할 수 있게 하고 있습니다.
여기까지는 API의 사전적인 의미일 것이다.
그런데 우리가 생각하는 API는 URL 형태를 가지고, 웹에서 JSON를 사용하는 RESTful를 생각하고 있을 것이다.
그럼 도대체 API, RESTful의 차이점은 무엇일까?
ChatGPT는 RESTful를 아래와 같이 정의하고 있다.
RESTful은 "Representational State Transfer"의 약자로, 웹 서비스의 아키텍처 스타일입니다. 웹 개발에서 일반적으로 사용되는 표준화된 방법론 중 하나로, 자원을 표현하고 조작하기 위한 일련의 원칙을 제공합니다.
RESTful은 클라이언트-서버 아키텍처와 분리된 자원(Resource) 개념을 기반으로 합니다. 자원은 일반적으로 URI(Uniform Resource Identifier)로 식별되며, 클라이언트는 HTTP 메소드(GET, POST, PUT, DELETE 등)를 사용하여 자원을 조작합니다.
RESTful의 주요 원칙은 다음과 같습니다:
1. 자원 식별: 각 자원은 고유한 URI를 통해 식별됩니다.
2. 표현을 통한 상태 전달: 클라이언트와 서버 간의 통신은 상태를 전달하는 대신, 자원의 표현을 주고 받는 것으로 이루어집니다.
3. 자기 서술적 메시지: 각 요청은 자신을 설명하는 메시지를 포함하고 있어야 합니다. HTTP 메소드, 헤더, 본문 등이 메시지에 포함됩니다.
4. 하이퍼미디어 링크: 클라이언트는 서버로부터 받은 자원의 링크를 통해 상호 작용할 수 있어야 합니다.
RESTful API는 단순하고 확장 가능한 아키텍처를 제공하여 다양한 클라이언트 플랫폼에서 사용할 수 있도록 합니다. 또한, RESTful은 웹 기술을 기반으로 하기 때문에 HTTP 프로토콜을 활용하여 자원을 조작하고 상태를 전달합니다. RESTful은 웹 서비스의 설계와 개발에서 널리 사용되는 방법론으로 알려져 있습니다.
그리고 이 두개, API와 RESTful의 차이점 또한 아래와 같이 정의하고 있다.
API와 RESTful은 서로 다른 개념입니다.
API는 "Application Programming Interface"의 약자로, 응용 프로그램 간의 상호 작용을 위한 규약이나 인터페이스를 의미합니다. API는 소프트웨어 개발에서 중요한 역할을 하며, 다른 시스템과의 통신을 용이하게 합니다. API는 다양한 형태로 제공될 수 있으며, 웹 API, 라이브러리 API, 운영 체제 API 등이 있습니다.
반면에 RESTful은 API 설계의 원칙 중 하나인 "Representational State Transfer"의 약자로, 웹 서비스의 아키텍처 스타일입니다. RESTful은 분산 시스템에서 자원을 표현하고 이를 조작하기 위한 표준화된 방법을 제공합니다. RESTful API는 웹 기술을 기반으로 하며, HTTP를 통해 자원을 식별하고 조작하는 방식을 사용합니다.
따라서, API는 일반적으로 서로 다른 소프트웨어 시스템 간의 상호 작용을 위한 인터페이스를 의미하고, RESTful은 웹 서비스의 아키텍처 스타일 중 하나로, HTTP를 통해 자원을 조작하는 방식을 제시합니다. API는 다양한 형태로 제공될 수 있지만, RESTful은 웹 기술을 기반으로 하며 특정한 원칙을 따르는 방식입니다.
RESTful은 API 설계 원칙의 하나이며, 웹 서비스의 아키텍처 스타일이라고 정의하고 있다.
그럼 REST API는 무엇일까?
REST API는 "Representational State Transfer Application Programming Interface"의 약자로, RESTful 아키텍처 스타일을 따르는 API를 의미합니다. RESTful API는 HTTP 프로토콜을 기반으로 클라이언트와 서버 간의 통신을 수행하는 API입니다.
REST API는 자원(Resource)을 URI(Uniform Resource Identifier)를 통해 식별하고, HTTP 메소드(GET, POST, PUT, DELETE 등)를 사용하여 해당 자원을 조작합니다. 예를 들어, HTTP GET 메소드를 사용하여 URI를 호출하면 서버는 해당 자원의 표현(Representation)을 클라이언트에게 반환합니다. POST 메소드를 사용하면 새로운 자원을 생성하거나 데이터를 전송할 수 있습니다. PUT 메소드를 사용하면 기존 자원을 업데이트하고, DELETE 메소드를 사용하면 자원을 삭제할 수 있습니다.
REST API는 상태를 전달하는 대신 자원의 표현을 주고 받는 Stateless한 통신 방식을 갖습니다. 클라이언트와 서버 간의 통신은 요청과 응답으로 이루어지며, 각 요청은 자기 서술적인 메시지를 포함합니다. 이 메시지는 HTTP 메소드, 헤더, 본문 등을 포함하여 요청의 목적과 상태를 명확히 설명합니다.
REST API는 다양한 클라이언트 플랫폼(웹 애플리케이션, 모바일 앱 등)에서 활용할 수 있으며, 쉽고 확장 가능한 아키텍처를 제공합니다. 또한, REST API는 웹 서비스의 설계와 개발에서 표준적으로 사용되는 방식이며, 인터넷 상의 다양한 서비스들이 REST API를 통해 상호 작용하고 데이터를 교환하는데 사용됩니다.
이제 정리를 해보자면,
API는 응용프로그램간, 시스템간의 규약, 인터페이스를 의미하고
RESTful은 API, 즉 시스템간의 규약을 가지는 설계의 한 종류이면서, 웹 서비스를 구현하는 아키텍처 스타일의 하나를 의미한다.
그리고 REST API는 RESTful 기반의 서비스 API를 구현한 것을 의미하게 된다.
참고 출처
https://chat.openai.com/c/b27a4448-65dc-4f1f-b22b-92ba9a454a91
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://post.naver.com/viewer/postView.naver?volumeNo=33950847&memberNo=25379965
반응형
'Development' 카테고리의 다른 글
GraphQL (0) | 2023.06.10 |
---|---|
CI/CD란 무엇인가? (0) | 2023.06.02 |
MSA 아키텍처 (0) | 2023.05.31 |
How to override methods in django (0) | 2021.03.10 |
django 커스텀 유저 모델(Custom User Model) (0) | 2021.03.09 |