API(응용 프로그램 인터페이스)는 소프트웨어 응용 프로그램들이 서로 통신하고 데이터를 주고받을 수 있도록 하는 인터페이스, 즉 규칙과 정의 집합입니다.
API
는 서로 다른 소프트웨어가 원활히 소통하게 해주는 "중간자" 역할을 합니다.
소프트웨어가 데이터를 가져오거나 특정 작업을 수행해야 할 때 API
를 통해 다른 소프트웨어와 정보를 주고받습니다.
예를 들어, 날씨 앱은 우리가 사용하는 기기에 실제 날씨 데이터를 저장하지 않지만,
날씨 데이터를 제공하는 서버와 API
를 통해 소통하여 최신 날씨 정보를 받아와 화면에 보여줍니다.
데이터 및 기능 공유 : API
는 데이터나 기능을 공유하면서도, 프로그램의 내부 구조나 복잡성을 감추기 때문에, 개발자는 API
를 통해 특정 기능을 호출할 수 있지만, 내부적으로는 어떻게 작동하는지 신경 쓸 필요가 없습니다. 이로 인해 재사용성과 확장성이 높아지게 됩니다.
다양한 기기와 플랫폼에서의 유연성 : 웹, 모바일, 데스크탑 등 다양한 플랫폼에서 API
를 활용하면 동일한 기능을 호출할 수 있습니다. 예를 들어, 구글 지도 API를 사용하면 웹사이트나 앱에서 지도 기능을 일관되게 제공할 수 있습니다.
요청(Request): 클라이언트가 서버에 요청하는 명령입니다. 요청에는 특정 기능을 실행하거나 데이터를 요청하는 정보가 포함됩니다.
응답(Response) : 서버가 요청에 대해 보내주는 응답입니다. 응답에는 요청한 데이터나 성공 여부, 에러 메시지가 포함될 수 있습니다.
Open API(공개 API) : 누구나 사용할 수 있는 API
로, 개발자들이 특정 기능을 자유롭게 사용할 수 있도록 공개된 인터페이스입니다.
Private API(비공개 API) : 회사 내부적으로만 사용하기 위해 제공되는 API
입니다.
Partner API : 특정 비즈니스 파트너와만 공유되는 API
입니다.
RESTful API는 REST 원칙을 따르며, 주로 HTTP 프로토콜을 사용합니다.
각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다.
모든 요청은 필요한 모든 정보를 담고 있어야 하며, 서버는 이전 요청의 상태를 기억할 필요가 없습니다.
예를 들어, 클라이언트가 데이터의 일부분만 업데이트하더라도 필요한 모든 정보(사용자 인증 정보 포함)를 요청에 담아서 보내야 합니다.
RESTful API
는 서버의 리소스를 고유하게 식별할 수 있는 URL(URI)
구조를 사용합니다.
각 URL
은 특정 자원을 나타내며, URL
을 통해 자원을 CRUD(생성, 읽기, 업데이트, 삭제)
방식으로 접근할 수 있습니다.
예를 들어, https://example.com/users/123
는 ID
가 123
인 사용자를 나타내며, https://example.com/users/123/posts
는 해당 사용자가 작성한 게시물을 나타냅니다.
RESTful API
는 HTTP
메서드를 통해 CRUD
작업을 수행합니다. 주요 메서드와 그 역할은 다음과 같습니다.
GET: 리소스를 조회합니다. 예를 들어, GET /users/123
은 ID
가 123
인 사용자의 정보를 조회합니다.
POST: 새로운 리소스를 생성합니다. 예를 들어, POST /users
는 새로운 사용자를 추가합니다.
PUT: 리소스를 업데이트합니다. 예를 들어, PUT /users/123
은 ID
가 123
인 사용자의 정보를 업데이트합니다.
DELETE: 리소스를 삭제합니다. 예를 들어, DELETE /users/123
은 ID
가 123
인 사용자를 삭제합니다.
RESTful API
는 특정 표현 형식에 의존하지 않습니다.
JSON
, XML
등 다양한 형식으로 데이터를 주고받을 수 있지만, JSON
형식이 가장 널리 사용됩니다.
클라이언트는 서버에 요청 시 자신이 원하는 데이터 형식을 지정할 수 있으며, 서버는 그에 맞춰 응답을 제공합니다.
장점:
단순성과 일관성: HTTP 메서드와 URL로 접근할 수 있어 구조가 간단하고 사용법이 일관적입니다.
확장성: 특정 표현 형식에 의존하지 않으므로 클라이언트와 서버가 독립적으로 발전할 수 있습니다.
유연성: 무상태성을 통해 서버의 확장성과 성능을 최적화할 수 있습니다.
단점:
실시간 통신에 적합하지 않음: RESTful API는 주로 비동기 통신과 요청-응답 모델에 적합하며, 웹소켓처럼 실시간 통신에는 적합하지 않습니다.
복잡한 작업에는 비효율적: 다수의 리소스를 한 번에 업데이트하거나 연속적인 작업을 처리해야 하는 경우, RESTful API가 복잡해질 수 있습니다.
챌린지반 세미나 주제로 API
와 RESTful API
에 대해 알아봤다.
API
는 그래도 느낌이 좀 오는데 RESTful API
는 당최 무슨 소린지 모르겠다.
내일 튜터님께서 해주시는 강의에 초집중해야겠다.
또 챌린지반 과제로 SPA프로젝트를 하나 진행하고 있는데...
따라쓰는 성경 웹사이트를 하나 만들어보고 있다.
생각보다 진행은 잘되고 있는데 이것은 완성되면 풀어보겠다.