What is API? Link to this heading

API(Application Programming Interface),是當我想要跟某個伺服器索取數據,所要遵守的規定。例如我的端點、參數、URL 要怎麼設定,要用什麼函式庫之類的。

既然是規定,那為甚麼名字裡面有個「介面」? Link to this heading

不要把介面想成是「使用者介面」,而是想成兩個應用程式之間的「交界」。API 就是一個當兩個應用程式有接觸,想要互相傳遞資料,API 就是在這個「交界處」扮演溝通的橋樑,讓兩個應用程式彼此之間知道應該要遵守那些格式跟規定。

API 包含了哪些東西? Link to this heading

  1. 數據交換的格式:如何格式化發送和接收的數據(例如,使用 JSON 或 XML)。

  2. 可用的操作和方法:哪些功能可用,以及如何通過特定的 HTTP 方法(如 GET、POST、PUT)來使用它們。

  3. 安全性和身份驗證:如何確保數據交換的安全性,通常通過 API 金鑰或 OAuth 進行身份驗證。

  4. 錯誤處理:當發生錯誤時,如何識別和處理這些錯誤(例如,通過特定的錯誤代碼和消息)。

假設我要建立一個天氣資訊網站 Link to this heading

整個流程是:

向有提供天氣資訊的網站,並根據對方提供的 API 規定提出索取資訊的請求。對方收到這個請求之後,把數據傳回來給我,我再把這些數據呈現到我的頁面上。

javascript
const axios = require('axios');

async function getWeather(city) {
    const apiKey = 'YOUR_API_KEY';
    const baseUrl = 'http://api.weatherapi.com/v1/current.json';
    const url = `${baseUrl}?key=${apiKey}&q=${city}`;

    try {
        const response = await axios.get(url);
        return response.data;
    } catch (error) {
        console.error('Error fetching weather data:', error);
    }
}

const city = 'Taipei';
getWeather(city).then(weatherInfo => {
    console.log(weatherInfo);
});

這段程式碼的工作流程如下:

  • 引入 axios 模組:用於發送 HTTP 請求。