API? REST API?

안현희·2024년 11월 12일
0

React를 배워보자!

목록 보기
17/20

1. API란?

API(응용 프로그램 인터페이스)는 소프트웨어 응용 프로그램들이 서로 통신하고 데이터를 주고받을 수 있도록 하는 인터페이스, 즉 규칙과 정의 집합입니다.

1-1. API는 '인터페이스'입니다.

  • API는 서로 다른 소프트웨어가 원활히 소통하게 해주는 "중간자" 역할을 합니다.
    소프트웨어가 데이터를 가져오거나 특정 작업을 수행해야 할 때 API를 통해 다른 소프트웨어와 정보를 주고받습니다.

  • 예를 들어, 날씨 앱은 우리가 사용하는 기기에 실제 날씨 데이터를 저장하지 않지만,
    날씨 데이터를 제공하는 서버와 API를 통해 소통하여 최신 날씨 정보를 받아와 화면에 보여줍니다.


1-2. API가 중요한 이유

  • 데이터 및 기능 공유 : API는 데이터나 기능을 공유하면서도, 프로그램의 내부 구조나 복잡성을 감추기 때문에, 개발자는 API를 통해 특정 기능을 호출할 수 있지만, 내부적으로는 어떻게 작동하는지 신경 쓸 필요가 없습니다. 이로 인해 재사용성과 확장성이 높아지게 됩니다.

  • 다양한 기기와 플랫폼에서의 유연성 : 웹, 모바일, 데스크탑 등 다양한 플랫폼에서 API를 활용하면 동일한 기능을 호출할 수 있습니다. 예를 들어, 구글 지도 API를 사용하면 웹사이트나 앱에서 지도 기능을 일관되게 제공할 수 있습니다.


1-3. API의 구성 요소

  • 요청(Request): 클라이언트가 서버에 요청하는 명령입니다. 요청에는 특정 기능을 실행하거나 데이터를 요청하는 정보가 포함됩니다.

  • 응답(Response) : 서버가 요청에 대해 보내주는 응답입니다. 응답에는 요청한 데이터나 성공 여부, 에러 메시지가 포함될 수 있습니다.


1-4. API 유형

  • Open API(공개 API) : 누구나 사용할 수 있는 API로, 개발자들이 특정 기능을 자유롭게 사용할 수 있도록 공개된 인터페이스입니다.

  • Private API(비공개 API) : 회사 내부적으로만 사용하기 위해 제공되는 API입니다.

  • Partner API : 특정 비즈니스 파트너와만 공유되는 API입니다.


2. RESTful API의 특징과 원칙

RESTful API는 REST 원칙을 따르며, 주로 HTTP 프로토콜을 사용합니다.

2-1. 무상태성(Stateless)

  • 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다.

  • 모든 요청은 필요한 모든 정보를 담고 있어야 하며, 서버는 이전 요청의 상태를 기억할 필요가 없습니다.

  • 예를 들어, 클라이언트가 데이터의 일부분만 업데이트하더라도 필요한 모든 정보(사용자 인증 정보 포함)를 요청에 담아서 보내야 합니다.


2-2. 리소스 기반 URI(Uniform Resource Identifier)

  • RESTful API는 서버의 리소스를 고유하게 식별할 수 있는 URL(URI) 구조를 사용합니다.

  • URL은 특정 자원을 나타내며, URL을 통해 자원을 CRUD(생성, 읽기, 업데이트, 삭제) 방식으로 접근할 수 있습니다.

  • 예를 들어, https://example.com/users/123ID123인 사용자를 나타내며, https://example.com/users/123/posts는 해당 사용자가 작성한 게시물을 나타냅니다.


2-3. HTTP 메서드 사용

  • RESTful APIHTTP 메서드를 통해 CRUD 작업을 수행합니다. 주요 메서드와 그 역할은 다음과 같습니다.

  • GET: 리소스를 조회합니다. 예를 들어, GET /users/123ID123인 사용자의 정보를 조회합니다.

  • POST: 새로운 리소스를 생성합니다. 예를 들어, POST /users는 새로운 사용자를 추가합니다.

  • PUT: 리소스를 업데이트합니다. 예를 들어, PUT /users/123ID123인 사용자의 정보를 업데이트합니다.

  • DELETE: 리소스를 삭제합니다. 예를 들어, DELETE /users/123ID123인 사용자를 삭제합니다.


2-4. 표현 방식 독립성

  • RESTful API는 특정 표현 형식에 의존하지 않습니다.
    JSON, XML 등 다양한 형식으로 데이터를 주고받을 수 있지만, JSON 형식이 가장 널리 사용됩니다.

  • 클라이언트는 서버에 요청 시 자신이 원하는 데이터 형식을 지정할 수 있으며, 서버는 그에 맞춰 응답을 제공합니다.


2-5. 계층 구조

  • REST 아키텍처는 계층 구조를 갖습니다.
    클라이언트는 서버가 직접 응답하는지, 아니면 중간 서버(예: 로드 밸런서나 캐시 서버)를 통해 응답하는지 알 필요가 없습니다.
    이는 시스템의 유연성과 확장성을 높이는 데 도움을 줍니다.

2-4. RESTful API의 장점과 단점

장점:

  • 단순성과 일관성: HTTP 메서드와 URL로 접근할 수 있어 구조가 간단하고 사용법이 일관적입니다.

  • 확장성: 특정 표현 형식에 의존하지 않으므로 클라이언트와 서버가 독립적으로 발전할 수 있습니다.

  • 유연성: 무상태성을 통해 서버의 확장성과 성능을 최적화할 수 있습니다.

단점:

  • 실시간 통신에 적합하지 않음: RESTful API는 주로 비동기 통신과 요청-응답 모델에 적합하며, 웹소켓처럼 실시간 통신에는 적합하지 않습니다.

  • 복잡한 작업에는 비효율적: 다수의 리소스를 한 번에 업데이트하거나 연속적인 작업을 처리해야 하는 경우, RESTful API가 복잡해질 수 있습니다.


회고

  • 챌린지반 세미나 주제로 APIRESTful API에 대해 알아봤다.
    API는 그래도 느낌이 좀 오는데 RESTful API는 당최 무슨 소린지 모르겠다.
    내일 튜터님께서 해주시는 강의에 초집중해야겠다.

  • 또 챌린지반 과제로 SPA프로젝트를 하나 진행하고 있는데...
    따라쓰는 성경 웹사이트를 하나 만들어보고 있다.
    생각보다 진행은 잘되고 있는데 이것은 완성되면 풀어보겠다.

그럼이만

0개의 댓글