什麼是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
身為採購專家,當然不能錯過11/11購物節的超殺折扣!本文將帶你深入瞭解蝦皮11/11購物節的完整攻略,從必領的各種優惠券、商城折扣,到限時的搶購技巧,讓你買到手軟荷包也不哭泣。更重要的是,揭密蝦皮分潤計畫,教你如何零成本創業,透過分享商品連結,每月輕鬆加薪,開啟數位遊牧人生!
Thumbnail
身為採購專家,當然不能錯過11/11購物節的超殺折扣!本文將帶你深入瞭解蝦皮11/11購物節的完整攻略,從必領的各種優惠券、商城折扣,到限時的搶購技巧,讓你買到手軟荷包也不哭泣。更重要的是,揭密蝦皮分潤計畫,教你如何零成本創業,透過分享商品連結,每月輕鬆加薪,開啟數位遊牧人生!
Thumbnail
雙11購物節將近,這次分享一些蝦皮海外賣場購物的步驟與注意事項,並且介紹雙11蝦皮購物的相關優惠;另外蝦皮分潤計畫持續招募新血中,只要分享購物連結即可獲得分潤,是很適合創作者的額外收入管道喔!
Thumbnail
雙11購物節將近,這次分享一些蝦皮海外賣場購物的步驟與注意事項,並且介紹雙11蝦皮購物的相關優惠;另外蝦皮分潤計畫持續招募新血中,只要分享購物連結即可獲得分潤,是很適合創作者的額外收入管道喔!
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吧!
Thumbnail
API 是軟體串接的根本、資料互拋的媒介。它普遍出現在我們生活應用中,就是交換資訊的管道。透過 API 將不同軟體的資訊整合分享,既能將不同軟體的資料呈現在你的既有軟體,也能擴充新功能!現在 NoCode 自動化工具內含已整合好 API 的眾多軟體模組,讓你不用寫程式,選取想整合的軟體就能完成串接!
Thumbnail
API 是軟體串接的根本、資料互拋的媒介。它普遍出現在我們生活應用中,就是交換資訊的管道。透過 API 將不同軟體的資訊整合分享,既能將不同軟體的資料呈現在你的既有軟體,也能擴充新功能!現在 NoCode 自動化工具內含已整合好 API 的眾多軟體模組,讓你不用寫程式,選取想整合的軟體就能完成串接!
Thumbnail
網址是 API 的門面,大家使用 API 的第一步就是要看它。 第一眼就要讓人就知道這隻 API 在做什麼? 甚至因為遵循標準(目前 REST 是主流),可以類推 API 應該會有什麼功能等等。
Thumbnail
網址是 API 的門面,大家使用 API 的第一步就是要看它。 第一眼就要讓人就知道這隻 API 在做什麼? 甚至因為遵循標準(目前 REST 是主流),可以類推 API 應該會有什麼功能等等。
Thumbnail
身為設計師,雖然不一定需要會寫程式,但若瞭解一些技術上的專有名詞,以及知道背後的運作原理,能夠讓你在職場技能樹上加分,以及在和工程師協作溝通上更順利喔!
Thumbnail
身為設計師,雖然不一定需要會寫程式,但若瞭解一些技術上的專有名詞,以及知道背後的運作原理,能夠讓你在職場技能樹上加分,以及在和工程師協作溝通上更順利喔!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News