什麼是API?

更新於 發佈於 閱讀時間約 10 分鐘

什麼是API?

API,全名是 Application Programming Interface,也就是「應用程式介面」。

把這個詞拆開來看,「應用程式」大家應該都很熟悉;至於「介面」,對於初學者來說可能有些陌生。

當我們去 Google 搜尋「介面」的定義,會得到這樣的答案:

「介面(英語:interface)是泛指實體把自己提供給外界的一種抽象化物,用以由內部操作分離出外部溝通方法,使其能被修改內部而不影響外界其他實體與其互動的方式,介面是兩實體交換資料的媒介,交換資料的實體可以是軟體、電腦硬體、外部裝置、人等等。」

讀完這段描述,你可能感覺更困惑了,別擔心,我們換個方式來理解這個概念。


介面(Interface)是什麼?

在生活中,介面可以是任何促進溝通和交互的東西。比如你使用的手機螢幕、鍵盤、瀏覽器,這些都是介面,它們讓你能夠與裝置互動。而在軟體設計中,介面扮演的是定義與規範的角色。這種「抽象的約定」確保不同的軟體系統可以用一致的方式進行溝通,交換資料,甚至執行功能。

想像一下,一個應用程式想要存取一台伺服器上的資料,或者兩個應用程式需要互相傳遞訊息。這時候,介面就是他們之間的通訊協定,確保數據可以正確且有序地傳輸。而這就是 API 的工作——它是應用程式之間的「溝通語言」與「交互標準」。


程式設計中的介面:C# 的範例解說

在 C# 等程式語言中,介面(Interface) 是一個非常重要的概念,它允許開發者定義某一組行為或功能,並由不同的類別來實作這些行為。介面本身只是一個「約定」,它不包含任何實作細節,而具體的類別才會負責如何執行這些行為。

想像一下,你是一個喜歡到處吃美食的饕客,而「介面」(Interface)就像是一種料理的基本約定。比方說,有一個介面是「日式料理」,它包含了幾道經典的日式餐點:拉麵、生魚片、丼飯、壽司。這就是這個介面所包含的內容。

現在,各家餐廳(類別)都決定要提供這些日式料理,但他們可以按照自己的方式來做這些菜餚。也就是說,每家餐廳繼承了「日式料理」這個介面,但每家餐廳對這些料理的做法可能都不一樣。

在程式設計中,介面(Interface)是一種抽象類型,用來定義一組不具體實作的方法、屬性、事件或索引子(indexers),而不包含任何實作細節。它強調「行為的約定」,即哪些方法或功能必須被實作,但不會具體描述這些方法該如何運作。介面本身無法被實體化,必須由具體的類別來實作。任何實作這個介面的類別都必須遵守這些定義——就像各家餐廳都得做出拉麵、生魚片、丼飯和壽司,不過具體怎麼做,每家餐廳可以自由發揮。

讓我們來看個程式碼範例:

//建立一個介面interface  名稱是 IJapaneseCuisine
public interface IJapaneseCuisine
{
void MakeRamen(); // 定義了做拉麵的方法
void MakeSashimi(); // 定義了做生魚片的方法
void MakeDonburi(); // 定義了做丼飯的方法
void MakeSushi(); // 定義了做壽司的方法
}

public class TokyoRestaurant : IJapaneseCuisine
{
public void MakeRamen()
{
Console.WriteLine("使用豚骨湯底製作拉麵"); // 東京餐廳用豚骨湯底做拉麵
}

public void MakeSashimi()
{
Console.WriteLine("使用最新鮮的海鮮做生魚片"); // 使用最新鮮的海鮮做生魚片
}

public void MakeDonburi()
{
Console.WriteLine("做一碗豪華的海鮮丼飯"); // 做一碗豪華的海鮮丼飯
}

public void MakeSushi()
{
Console.WriteLine("做一份經典壽司拼盤"); // 做一份經典壽司拼盤
}
}

public class OsakaRestaurant : IJapaneseCuisine
{
public void MakeRamen()
{
Console.WriteLine("使用醬油湯底製作拉麵"); // 大阪餐廳用醬油湯底做拉麵
}

public void MakeSashimi()
{
Console.WriteLine("使用當地漁獲做生魚片"); // 使用當地漁獲做生魚片
}

public void MakeDonburi()
{
Console.WriteLine("做一碗關西風的牛肉丼飯"); // 做一碗關西風的牛肉丼飯
}

public void MakeSushi()
{
Console.WriteLine("做一份創意壽司"); // 做一份創意壽司
}
}

在這個例子裡,IJapaneseCuisine 介面定義了幾道日式料理的方法:MakeRamen()MakeSashimi()MakeDonburi()MakeSushi()。無論是哪家餐廳(類別),只要它繼承了 IJapaneseCuisine 介面,就必須提供這些料理的做法。

然而,東京餐廳可能更喜歡用豚骨湯底來做拉麵,而大阪餐廳則選擇醬油湯底。同樣的生魚片、丼飯和壽司,每家餐廳都有自己獨特的製作方式。

儘管製作方法各不相同,最後呈現的仍然是符合「日式料理」這個定義的菜餚。這就是介面的魅力所在:它定義了一組必須提供的功能(或菜餚),但具體如何實現,則由各個類別(餐廳)自行決定。


這個比喻應該能幫助你更好地理解介面的概念。無論哪家餐廳如何創新,它們做出的拉麵、生魚片、丼飯和壽司始終還是「日式料理」,就像任何類別實作的介面方法最終還是符合介面的定義一樣。

當然,如果要深入探討,這個例子還有很多值得延伸的地方,比如:如果兩家餐廳使用相同的方法製作某道菜,或者其中一家餐廳不提供拉麵,該怎麼處理?(空繼承),如果是餐廳是總店與分店的概念呢?分店如果有特殊餐點的話呢?等等非常多特殊的情境,而這就涉及更深的設計模式探討了,這部分如果之後篇幅夠有機會在說吧~


回到 API

現在,讓我們回到 API 的話題。其實 API 的概念也非常簡單。API 就是幫你溝通、交流、傳遞各不同系統的應用程式中介,是軟體之間溝通的橋樑,透過定義好的規則,讓不同系統交換數據或請求服務,提升整體整合和運作效率。


API 的種類

API 可以有多種形式,根據應用場景的不同,API 的種類也有區分。以下是幾種常見的 API:

  1. Web API: Web API 是用於不同網站或應用之間交換數據的一種 API。常見的 Web API ,如RESTful API ,通常使用 HTTP 協定進行通信。這類 API 非常靈活,可以讓應用程式之間互相交流,實現數據的整合和功能的擴展。
  2. 操作系統 API: 操作系統 API 是指操作系統提供的介面,讓應用程式可以與底層硬體進行互動。舉例來說,當你開發一個應用程式,需要讀取文件或管理記憶體時,就會使用操作系統提供的 API。
  3. 庫或框架 API: 各種程式庫(如 jQuery、React)或框架(如 .NET Framework)也提供 API,讓開發者可以透過這些 API 存取或擴展現有的功能。這些 API 將複雜的邏輯包裝起來,讓開發者可以更專注於應用程式的邏輯,而不必重新實作所有底層功能。

API 在日常生活中的應用

API 是現代應用程式開發的關鍵部分,很多我們日常使用的應用程式背後都依賴於各種 API 進行數據交換和功能整合。以下是幾個常見的例子:

  • 社交媒體整合:當你使用第三方應用登入 Facebook 或 Twitter 時,這背後就是 API 在運作。應用透過 API 向社交媒體伺服器請求數據,並完成認證和資料交換。
  • 支付系統:許多電商網站使用支付 API(如 PayPal 或 Stripe)來處理交易。透過 API,這些網站能夠安全地將支付信息傳遞給支付系統,並獲取交易結果。
  • 地圖服務:像 Google Maps API 這樣的地圖服務,讓開發者可以輕鬆將地圖功能嵌入到自己的應用中,而不需要自己去開發整個地圖系統。

API 的優勢

API 的最大優勢在於其靈活性和可擴展性。開發者可以重複使用別人的 API,整合現有的技術和數據,而不必重新發明輪子。這樣不僅節省了時間和成本,還提高了系統的互通性,讓不同應用能夠無縫協作。


今日小結:

今天,我們初步了解了什麼是 API,它的種類,以及它如何在我們的日常生活中默默發揮作用。API 的存在讓開發者能夠輕鬆地利用他人的技術成果,讓軟體開發變得更加高效。明天,我們將繼續探索 API 的世界,看看 API 是如何像一個「外送員」一樣,幫助應用之間運送數據。那我們這系列文章主要聚焦在WebAPI,後續說到API都是指WebAPI,而非另外兩種API。

留言
avatar-img
留言分享你的想法!
avatar-img
ChiYu Code Journey
0會員
12內容數
歡迎來到 ChiYu Code Journey!這裡是我分享技術心得與開發經驗的空間,主要內容涵蓋 C#、.Net、API 開發及雲端等程式主題。偶爾也會分享一些日常生活點滴,像是我與我家可愛的法鬥相處的趣事等。希望在這裡能和大家一起學習、交流,一同踏上這段程式旅程!
ChiYu Code Journey的其他內容
2025/01/23
在前一篇文章中,我們探討了非同步程式設計的基本概念,並介紹了如何使用 Task、Task<T>、async 和 await 來設計非同步操作。然而,非同步程式設計並非總是那麼直截了當。在實際開發中,開發者經常會遇到一些挑戰,這些挑戰主要來自於高併發、多執行緒以及非同步操作的特性。
2025/01/23
在前一篇文章中,我們探討了非同步程式設計的基本概念,並介紹了如何使用 Task、Task<T>、async 和 await 來設計非同步操作。然而,非同步程式設計並非總是那麼直截了當。在實際開發中,開發者經常會遇到一些挑戰,這些挑戰主要來自於高併發、多執行緒以及非同步操作的特性。
2025/01/22
在 C# 中,非同步程式設計是一種有效提升應用性能、併發處理能力的重要技術。今天,我們將詳細介紹 C# 中的非同步核心概念:async、await、Task 和 Task<T>,說明它們的使用方式,並探討一些進階應用。最後,我們會簡單介紹一些非同步程式設計中常見的問題。 什麼是非同步程式設計?
2025/01/22
在 C# 中,非同步程式設計是一種有效提升應用性能、併發處理能力的重要技術。今天,我們將詳細介紹 C# 中的非同步核心概念:async、await、Task 和 Task<T>,說明它們的使用方式,並探討一些進階應用。最後,我們會簡單介紹一些非同步程式設計中常見的問題。 什麼是非同步程式設計?
2025/01/21
這篇文章探討非同步編程的優缺點,並提供在設計非同步系統時需要注意的事項。非同步編程允許程式在等待 I/O 操作完成的同時,繼續執行其他工作,提高響應速度和資源利用率。然而,非同步程式設計也增加了系統複雜性,需要謹慎處理錯誤和確保代碼可讀性。
Thumbnail
2025/01/21
這篇文章探討非同步編程的優缺點,並提供在設計非同步系統時需要注意的事項。非同步編程允許程式在等待 I/O 操作完成的同時,繼續執行其他工作,提高響應速度和資源利用率。然而,非同步程式設計也增加了系統複雜性,需要謹慎處理錯誤和確保代碼可讀性。
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
API(應用程序接口)和SDK(軟件開發工具包)雖然然在功能上有些重叠,但它們是不同的概念: API(Application Programming Interface) 定義:API是一組規則和協議,允許一个軟件程序與另一個軟件程序進行通信。簡單來說,API定義了如何使用某個軟件組件或服務。
Thumbnail
API(應用程序接口)和SDK(軟件開發工具包)雖然然在功能上有些重叠,但它們是不同的概念: API(Application Programming Interface) 定義:API是一組規則和協議,允許一个軟件程序與另一個軟件程序進行通信。簡單來說,API定義了如何使用某個軟件組件或服務。
Thumbnail
本文深入探討 Web API 與 HTTP 協議,解釋 HTTP 請求方法 (GET, POST, PUT, PATCH, DELETE)、HTTP 結構 (Headers, Body, 狀態碼),。透過說明各種 HTTP 狀態碼,讀者可以更深入理解 Web API 的設計與應用。
Thumbnail
本文深入探討 Web API 與 HTTP 協議,解釋 HTTP 請求方法 (GET, POST, PUT, PATCH, DELETE)、HTTP 結構 (Headers, Body, 狀態碼),。透過說明各種 HTTP 狀態碼,讀者可以更深入理解 Web API 的設計與應用。
Thumbnail
本篇文章淺顯易懂地介紹什麼是API(應用程式介面),並以生活化的例子和C#程式碼範例說明介面的概念,以及API在不同領域的應用和優勢,例如Web API、作業系統API、庫或框架API等,並點出其在社群媒體整合、支付系統、地圖服務等日常生活中的重要性。
Thumbnail
本篇文章淺顯易懂地介紹什麼是API(應用程式介面),並以生活化的例子和C#程式碼範例說明介面的概念,以及API在不同領域的應用和優勢,例如Web API、作業系統API、庫或框架API等,並點出其在社群媒體整合、支付系統、地圖服務等日常生活中的重要性。
Thumbnail
API是我們與其他系統介接的標準化規格, 那一份好的規格勢必要能夠達到引導與驗證的作用, 避免對方介接錯誤, 引發後續的災難性損失, 因此這一章節就是要教我們如何定義每個API的欄位怎麼填? 資料型態是什麼? 以及如何生成API文件。 我們在「【🔒 Python API框架篇 - Fas
Thumbnail
API是我們與其他系統介接的標準化規格, 那一份好的規格勢必要能夠達到引導與驗證的作用, 避免對方介接錯誤, 引發後續的災難性損失, 因此這一章節就是要教我們如何定義每個API的欄位怎麼填? 資料型態是什麼? 以及如何生成API文件。 我們在「【🔒 Python API框架篇 - Fas
Thumbnail
API(Application Programming Interface,應用程式介面)可以視為不同軟體系統之間的溝通橋梁,讓雙邊可以交換數據並執行各種功能。這篇會記錄產品經理一定要知道的幾個 API 概念,像是常見的錯誤代碼以及不同的 HTTP 方法(如 PUT、GET、POST)和實際案例說明
Thumbnail
API(Application Programming Interface,應用程式介面)可以視為不同軟體系統之間的溝通橋梁,讓雙邊可以交換數據並執行各種功能。這篇會記錄產品經理一定要知道的幾個 API 概念,像是常見的錯誤代碼以及不同的 HTTP 方法(如 PUT、GET、POST)和實際案例說明
Thumbnail
※ 什麼是Web API API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。 API流程: 終端使用者用任何一種裝置進入瀏覽器。 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。 後端透過 API 收到前端的請求後,取得資料並回應給前端。 前端渲染畫面,終端使用者
Thumbnail
※ 什麼是Web API API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。 API流程: 終端使用者用任何一種裝置進入瀏覽器。 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。 後端透過 API 收到前端的請求後,取得資料並回應給前端。 前端渲染畫面,終端使用者
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News