API와의 첫 데이트, 너무 떨지 마!

📌

👉



01


API (Application Programming Interface) 란

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말로,

 

API는 애플리케이션 간에 데이터를 주고받을 수 있도록 돕는 "언어"라고 할 수 있습니다. 

예를 들어, 날씨 앱을 켤 때, 앱은 날씨 정보를 제공하는 API에 "오늘 날씨가 어때요?"라고 묻고, API는 날씨 정보를 반환합니다. 이렇게 서버와 클라이언트 간에 데이터를 교환할 때 API가 중요한 역할을 하죠.

 

1. API 역할

API는 클라이언트와 서버 간에 데이터를 주고받는 중요한 역할을 합니다.

예를 들어, 우리가 웹사이트에서 정보를 요청할 때, 서버에서 데이터를 받아오는 방식을 API가 처리한다고 생각하면 됩니다.

 

2. API 종류

API는 몇 가지 종류로 나뉩니다.

 Private API

: 회사 내부에서만 사용되는 API입니다. 따라서 제삼자인 외부인에게 노출되지 않습니다.

 

 Public API

: Public API는 말 그대로 public, 즉 개방형 API로, 모두가 사용할 수 있는 API입니다.

Public API 중에서도 접속하는 대상에 대한 제약이 없는 경우를 OpenAPI라 합니다.

 

 Partner API

: 기업이 데이터 공유에 동의하는 특정 파트너에게만 제공되는 API입니다.

주로 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용됩니다.

 

 

3. 다양한 종류의 API

REST API

 

  • 웹에서 데이터를 요청할 때 사용하는 가장 일반적인 방식입니다.
  • HTTP 메서드(GET, POST 등)를 사용해 서버와 데이터를 주고받습니다.
  • 데이터는 주로 JSON 형식으로 받습니다.

 

GraphQL

 

  • 페이스북에서 만든 API로, 필요한 데이터만 선택적으로 요청할 수 있습니다.
  • 하나의 엔드포인트에서 모든 요청을 처리하고, 데이터를 더 효율적으로 관리할 수 있습니다.

 

 

4  API 장단점

API는 매우 유용하지만, 장단점이 존재합니다. 이를 잘 이해하고 사용하면 더욱 효율적으로 활용할 수 있습니다.

 

 장점

 

  1. 데이터 접속의 표준화와 편의성
    👉 API는 데이터 접속 방식을 표준화합니다. 각기 다른 시스템 간의 데이터를 주고받을 때 일관된 방식으로 접근할 수 있기 때문에 개발자들이 더 쉽게 작업할 수 있습니다.

    예를 들어, REST API를 사용하면 어디서든 동일한 방식으로 데이터를 요청하고 받을 수 있죠.


  2. 자동화와 확장성
    👉 API를 사용하면 다양한 시스템을 자동화할 수 있습니다.

    예를 들어, API 호출을 통해 데이터를 자동으로 수집하거나, 특정 작업을 자동화하는 방식으로 활용할 수 있습니다. 또한, 새로운 기능이나 시스템을 추가할 때 API를 통해 기존 시스템에 손쉽게 확장할 수 있습니다.


  3. 적용력
    👉 API는 다양한 플랫폼과 시스템에 적용할 수 있습니다.

    예를 들어, 웹 애플리케이션뿐만 아니라 모바일 앱, IoT 기기 등 여러 환경에서 API를 사용하여 통합하고 데이터를 주고받을 수 있습니다.

 



 단점

  1. 보안성
    👉 API를 통해 민감한 데이터가 오가기 때문에 보안이 중요한 이슈가 됩니다. 
    API가 제대로 보호되지 않으면 데이터 유출이나 악의적인 공격에 노출될 수 있습니다. 
    API 보안을 강화하는 방법에는 인증, 암호화, 권한 관리 등이 포함됩니다.

  2. HTTP 방식의 제한
    👉 대부분의 API는 HTTP 프로토콜을 사용합니다. 
    하지만 HTTP는 기본적으로 데이터 전송 방식에 제한이 있을 수 있습니다.
     
    예를 들어, HTTP의 요청-응답 모델은 실시간 데이터 전송이나 큰 파일 처리에 한계가 있을 수 있습니다.

  3. 표준의 부재와 개발 비용
    👉 API의 표준이 제대로 정립되지 않으면, 각 시스템 간의 상호 운용성이 부족할 수 있습니다. 또한, API를 설계하고 구축하는 데에는 시간과 비용이 들기 때문에, 특히 대규모 시스템에서는 개발 비용이 증가할 수 있습니다.


02


API 요청과 응답

API 호출을 할 때, HTTP 메서드를 사용해서 요청을 보내고, 서버는 이에 대한 응답을 해줍니다.

1. HTTP 메서드

 

GET: 데이터를 요청할 때 사용합니다.

POST: 데이터를 서버에 보낼 때 사용하죠.

PUT: 데이터를 수정할 때 사용됩니다.

DELETE: 데이터를 삭제할 때 사용합니다.

 

 

2. 응답 상태 코드

 

 200 OK: 요청이 성공적으로 처리되었음을 나타냅니다.

404 Not Found: 요청한 페이지나 데이터가 없을 때 나타납니다.

500 Internal Server Error: 서버에서 문제가 발생했음을 나타냅니다.



03


REST API

REST는 서버와 클라이언트가 데이터를 효율적으로 주고받기 위한 규칙입니다.

REST는 주로 웹에서 HTTP를 이용해 데이터를 처리하는 방식입니다. 간단하게 말하자면, 데이터를 요청하고, 응답을 받는 표준화된 방법이죠.

 

REST API는 이러한 REST 규칙을 따르며, 데이터를 요청하거나 보낼 때 엔드포인트(데이터가 저장된 주소)를 사용하고, HTTP 메서드(GET, POST 등)를 통해 요청을 보냅니다.

 

1. REST 란

REST (Representational State Transfer)는 서버와 클라이언트 간에 상태를 전달하는 방식입니다.

클라이언트가 요청을 보내면, 서버는 그 상태를 클라이언트에게 전달하여 데이터를 처리하는 방식이에요.

 

2. REST API의 구조

 

 

 

 

엔드포인트

: 데이터가 저장된 서버의 URL 주소입니다. 예를 들어, https://api.example.com/users와 같이 사용됩니다.


HTTP 메서드

: 데이터를 요청하는 방식입니다.

  • GET: 데이터를 가져올 때 사용
  • POST: 데이터를 서버에 보낼 때 사용
  • PUT: 기존 데이터를 수정할 때 사용
  • DELETE: 데이터를 삭제할 때 사용

요청 본문

: 클라이언트가 서버로 보낼 데이터입니다. 예를 들어, POST 요청 시 새로운 데이터(사용자 정보 등)를 보내는 부분입니다.

 

응답

: 서버가 클라이언트에게 반환하는 데이터입니다. 응답은 보통 JSON 형식으로 제공됩니다.



04


API 호출 흐름

API 호출은 간단합니다. 클라이언트가 서버에 데이터를 요청하고, 서버는 그 데이터를 응답하는 방식입니다.

일반적으로 데이터를 JSON 형식으로 주고받죠. 이 흐름은 웹 애플리케이션에서 매우 중요한 역할을 합니다.

 

1. API 호출을 위한 기본 흐름

클라이언트 → 서버 → 클라이언트

: 클라이언트는 서버에 데이터를 요청하고, 서버는 요청된 데이터를 처리한 뒤 클라이언트에게 응답을 보냅니다.

클라이언트는 이 응답을 받아서 화면에 표시하죠.

 

2. 데이터 요청 후 처리 과정 설명

클라이언트가 요청을 보내면 서버는 데이터를 처리한 후 JSON 형식으로 응답합니다. 

클라이언트는 이 응답을 받아 화면에 표시하거나 다른 작업을 처리할 수 있습니다.


예를 들어, 날씨 API에서 날씨 정보를 요청하면, 서버는 {"temperature": 22, "humidity": 60}와 같은 데이터를 반환하고, 클라이언트는 이를 화면에 "오늘의 기온은 22도"처럼 보여줍니다.



05


API와 비동기 처리

API 호출은 비동기적으로 처리됩니다.

서버에서 데이터를 요청하고 그 데이터를 받는 데 시간이 걸리기 때문에,

이 동안 다른 작업을 처리할 수 있게 해주는 방식입니다. 비동기 처리는 사용자 경험을 향상시키는 중요한 요소입니다.

 

1. API 호출이 비동기적으로 처리되는 이유

서버와의 통신은 시간이 걸리기 때문입니다. 우리가 요청한 데이터를 서버가 처리하는 데 시간이 필요하고, 그 시간 동안 사용자는 웹 페이지를 계속 사용할 수 있어야 하죠.

 

이를 위해 비동기 처리를 사용하여, 데이터를 기다리는 동안 다른 작업을 할 수 있게 됩니다.

예를 들어, 사용자 인터페이스(UI)가 멈추지 않고 반응하도록 하는 거죠.

 

2. 비동기 요청 처리 방식

 

콜백 함수

: 데이터를 받아오고 나서 실행할 코드를 미리 설정하는 방식입니다. 

하지만, 콜백 함수는 중첩이 많아지면 코드가 복잡해질 수 있죠.


Promise

: 비동기 작업이 끝났을 때 처리할 방법을 지정하는 방식입니다. 

then()과 catch() 메서드를 사용하여 성공 또는 실패를 처리합니다.


async/await

: Promise 기반의 비동기 작업을 마치 동기식 코드처럼 읽고 쓰기 쉽게 만들어주는 문법입니다. 

await를 사용해 비동기 코드가 끝날 때까지 기다릴 수 있으며, async 함수 내에서 사용됩니다.



06


API 호출 예시

API 호출을 실제로 어떻게 사용하는지에 대한 예시를 보면 이해가 더 쉬워집니다.

여기서는 날씨 API를 호출하는 예시를 들어볼게요.

 

1. 실제 API 호출 예시를 통해 API 사용법 소개

예를 들어, 날씨 정보를 제공하는 OpenWeatherMap API를 사용한다고 가정해봅시다. 

이 API에 요청을 보내면 날씨 데이터를 받아올 수 있습니다. 요청을 보내기 위해서는 API 키가 필요하죠. API 호출은 GET 메서드를 사용하고, 클라이언트에서 서버로 날씨 정보를 요청하게 됩니다.

const apiKey = 'your_api_key_here';
const city = 'Seoul';
const url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}`;

fetch(url)
  .then(response => response.json())
  .then(data => {
    console.log(`The weather in ${city} is ${data.weather[0].description}.`);
  })
  .catch(error => console.error('Error:', error));

📂설명

  • 이 코드에서 fetch를 사용하여 날씨 API에 요청을 보내고, 서버가 반환한 JSON 데이터를 처리하여 화면에 날씨 정보를 출력합니다.

 

2. 간단한 데이터 호출 예시를 작성하여 이해를 돕기

간단한 예시로 JSONPlaceholder라는 무료 API를 사용해 보겠습니다.

이 API는 가상의 사용자 데이터를 제공합니다. 클라이언트에서 이 API로 요청을 보내면 가상의 사용자 데이터를 받아올 수 있습니다.

fetch('https://jsonplaceholder.typicode.com/users')
  .then(response => response.json())
  .then(data => {
    data.forEach(user => {
      console.log(`User: ${user.name}, Email: ${user.email}`);
    });
  })
  .catch(error => console.error('Error:', error));

📂설명

  • 이 코드에서는 jsonplaceholder.typicode.com에서 사용자 정보를 요청하고, 받은 데이터를 nameemail을 출력하는 형태로 처리합니다.


07


API 보안

API 보안은 매우 중요합니다. API를 통해 민감한 정보가 오가므로, 이를 안전하게 보호할 수 있는 방법이 필요하죠.

예를 들어, 개인 정보나 결제 정보 등 중요한 데이터가 API를 통해 주고받을 수 있기 때문에 보안은 꼭 신경 써야 합니다.

1. API 보안의 중요성

 

  • API를 사용할 때, 인증을 위한 키를 사용합니다.
    이 키는 서버에 요청을 보내는 사람을 식별하는 역할을 하며, 요청을 보내는 주체가 권한이 있는지 확인합니다.
    만약 API 키가 유출되면, 악의적인 사용자가 서버에 무단으로 접근할 수 있기 때문에 API 키를 안전하게 관리해야 합니다.
  • 예를 들어, API Key는 특정 사용자나 앱만 사용할 수 있게 제한을 두며, IP 주소나 사용자 인증을 통해 접근을 제어할 수도 있습니다. 이를 통해 데이터가 안전하게 보호될 수 있습니다.

 

 

2. 인증 방식 (API Key, OAuth 등)과 그 사용법

API Key

: 가장 기본적인 인증 방식으로, 서버에 요청을 보낼 때 함께 API 키를 전달하여 사용자를 인증합니다. 

API 키는 주로 요청 URL에 포함되거나, HTTP 헤더에 추가되어 전달됩니다. 

예를 들어, https://api.example.com/data?apikey=your_api_key처럼 URL에 포함될 수 있습니다.

const url = `https://api.example.com/data?apikey=your_api_key`;
fetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

 

 

  OAuth

: OAuth는 더 복잡한 인증 방식으로, 사용자의 데이터에 접근하려는 애플리케이션이 사용자의 허가를 받아 인증하는 방식입니다. 예를 들어, 구글이나 페이스북 로그인을 사용할 때 OAuth 인증이 사용됩니다.

 

이 방식은 토큰 기반 인증으로, API 서버가 발급한 액세스 토큰을 사용하여 인증을 진행합니다.

토큰을 사용하면 사용자가 로그인한 상태에서 지속적인 접근을 할 수 있습니다.

 

예시: 사용자 로그인 후, 발급받은 액세스 토큰을 API 요청 헤더에 포함하여 인증합니다.

const token = 'your_access_token';
fetch('https://api.example.com/data', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));


08


마무리

API는 우리가 사용하는 앱과 웹사이트에서 중요한 역할을 해요. 서버와 클라이언트가 데이터를 주고받을 수 있게 도와주죠. 우리가 날씨 앱을 사용할 때, 서버에서 날씨 정보를 받아오는 것도 API 덕분이에요.

 API의 중요성

API는 여러 시스템이나 서비스가 서로 데이터를 주고받을 수 있게 해줍니다. 예를 들어, 우리가 웹사이트에서 정보를 요청할 때, API가 그 요청을 처리하고 데이터를 서버에서 받아오는 방식이에요.

 보안 고려사항

API를 사용할 때 중요한 점은 보안이에요. 데이터를 안전하게 주고받으려면 인증을 잘 해야 해요. 예를 들어, API 키나 OAuth 같은 인증 방식으로 사용자나 시스템이 안전하게 인증되도록 해야 합니다.

 결론

API는 다양한 앱과 웹사이트에서 데이터를 주고받는 중요한 기술이에요. API를 잘 활용하면, 더 효율적이고 편리한 서비스를 만들 수 있어요. 앞으로도 API를 활용해 더 많은 기능을 추가할 수 있을 거예요!