」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 了解 API:應用程式如何通訊:

了解 API:應用程式如何通訊:

發佈於2024-11-07
瀏覽:317

Understanding APIs: How Applications Communicate:

API(應用程式介面)是一組允許一個軟體應用程式與另一個軟體應用程式進行通訊的規則和定義。它充當中介,透過定義不同的軟體系統可以發出的請求類型、如何發出這些請求、資料格式以及系統應如何回應,使不同的軟體系統能夠相互互動。

API 中的關鍵概念

  1. 端點:

    • 這些是 API 公開的特定 URL,以允許外部應用程式與其互動。例如,如果您想從天氣 API 取得數據,您可以向特定端點發送請求,例如 https://api.weather.com/v1/forecast。
  2. 請求與回應:

    • 請求:應用程式向 API 端點發送請求,指定它想要什麼資料或操作。
    • 回應:API 發迴回應,其中可以包含資料(通常採用 JSON 或 XML 格式)、狀態碼和訊息。
      • 狀態代碼範例:
      • 200 OK:請求成功。
      • 404 Not Found:端點不存在。
      • 500 內部伺服器錯誤:存在伺服器端問題。
  3. HTTP 方法:
    API 通常使用特定的 HTTP 方法進行請求,例如:

    • GET:檢索資料。
    • POST:提交資料以建立或更新資源。
    • PUT:更新或取代資源。
    • DELETE:刪除資源。
  4. API 金鑰與驗證:
    某些 API 要求使用者在發出請求之前驗證自己的身分。這是透過以下方式完成的:

    • API 金鑰:用於驗證使用者或應用程式的唯一識別碼。
    • OAuth:一種更高級的協議,允許用戶透過第三方服務進行身份驗證,而無需共享其憑證。
  5. 速率限制:
    許多 API 限制應用程式在特定時間範圍內可以發出的請求數量。這是為了確保伺服器不會因來自單一來源的過多請求而不堪重負。

  6. RESTful API
    具象狀態傳輸 (REST) 是一種用於建立 API 的流行架構。 RESTful API 是無狀態的,並使用標準 HTTP 方法。 REST 的關鍵原則包括:

    • 無狀態:從客戶端到伺服器的每個請求都必須包含瞭解和處理該請求所需的所有資訊。
    • 統一介面:透過統一的URL結構存取資源。
    • 資源表示:資源通常使用 JSON 或 XML 等格式表示。
  7. SOAP API:
    SOAP(簡單物件存取協議)是另一種用於建立 API 的協議,它更結構化並包含標準化的訊息傳遞系統。它更安全,非常適合安全性優先的應用程式(例如銀行業務)。

API互動範例

假設您有一個天氣應用程序,並且您想要獲取紐約市的當前天氣。 API 互動如下所示:

  1. 您的應用程式向 API 端點發送 GET 請求
   https://api.weather.com/v1/city/newyork
  1. 伺服器處理請求並以 JSON 格式傳回 回應
   {
     "city": "New York",
     "temperature": "15°C",
     "description": "Clear sky"
   }

您的應用程式現在可以向使用者顯示此資訊。

API 類型

  1. Web API:這些是最常見的,用於透過 Web 與遠端伺服器交互,例如 REST 或 SOAP API。
  2. 作業系統 API:允許軟體與作業系統互動的 API。
  3. 資料庫 API:它們支援與資料庫交互,允許應用程式讀取或修改資料庫中儲存的資料。
  4. 庫或框架API:這些是庫或框架提供的API,允許開發人員重複使用程式碼,而無需重新發​​明輪子。

API 在現代軟體開發中至關重要,它允許不同的服務和應用程式無縫協作。它們用於網路開發、行動應用程式、物聯網設備等等。

版本聲明 本文轉載於:https://dev.to/kamlesh_gupta_539c974fb0d/understanding-apis-how-applications-communicate-30f9?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-20
  • 如何有效率地選擇不重複的隨機數組項目?
    如何有效率地選擇不重複的隨機數組項目?
    如何有效地隨機選擇數組項目而不重複您的程式碼建立最近選擇的數組以防止重複,並調用遞歸函數當所選項目位於最近的選擇中時,命名為ChooseName()。這種方法確保了唯一性,但如果數組大小有限,可能會導致無限循環。 它是遞迴函數嗎? 是的,chooseName()呼叫本身找到一個獨特的選擇。遞歸使函數...
    程式設計 發佈於2024-11-20
  • 如何偵測不同瀏覽器中的自動填充?
    如何偵測不同瀏覽器中的自動填充?
    檢測瀏覽器自動填充:詳細指南自動填充是瀏覽器提供的一項便捷功能,可以使用預先保存的信息快速填寫表單欄位。雖然這可以簡化使用者體驗,但對於在特定場景中尋求追蹤或停用自動填充的開發人員來說,這是一個挑戰。 何時發生自動填充? 自動填入的時間自動填入會因瀏覽器和輸入欄位類型而異。 對於使用者名稱/密碼欄位...
    程式設計 發佈於2024-11-20
  • 使用 Flask 和 MySQL 的任務管理器應用程式
    使用 Flask 和 MySQL 的任務管理器應用程式
    Project Overview This project is a Task Manager App built with Flask and MySQL. It provides a simple RESTful API to manage tasks, demonstrati...
    程式設計 發佈於2024-11-20
  • 如何使用其識別碼刪除特定的 HTML `` 標籤及其內容?
    如何使用其識別碼刪除特定的 HTML `` 標籤及其內容?
    使用其識別碼刪除特定HTML 標籤及其內容與特定HTML 片段一起呈現,您尋求消除特定 標籤內包含的部分由其唯一的id 屬性識別。目標是刪除此標記部分的內部內容,同時保持周圍程式碼的完整性。 基於 DOM 的解決方案利用文件物件模型 (DOM) 的強大功能,您可以設計手術切除目標部分。這種方法允許對...
    程式設計 發佈於2024-11-20
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-20
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段中:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內...
    程式設計 發佈於2024-11-20
  • 如何在 CSS 中定位父元素中類別的第一次出現?
    如何在 CSS 中定位父元素中類別的第一次出現?
    選擇父級中某個類別的第一次出現在CSS 中,當您需要定位某個類別的第一當元素時,就會出現挑戰父元素中的特定類,尤其是當該類可能出現在其同級元素中的不同位置時。當父元素的類別或子結構可能不同時,這個問題變得更加複雜。 :first-of-type Pseudo-ClassCSS3 提供了:first ...
    程式設計 發佈於2024-11-20
  • 為什麼我的線程安全隊列 Dequeue() 函數在為空時會導致分段錯誤?
    為什麼我的線程安全隊列 Dequeue() 函數在為空時會導致分段錯誤?
    C 11 線程安全隊列:理解和調試您在線程安全隊列實現中遇到分段錯誤dequeue() 函數,特別是當隊列為空時。出現此異常的原因是您的等待條件 wait_for(lock, ti​​meout) 的結構不正確,無法處理虛假喚醒。 了解虛假喚醒條件變數像 populatedNotifier 一樣,可...
    程式設計 發佈於2024-11-20
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-20
  • 如何為內建 Python 類型新增自訂屬性和方法?
    如何為內建 Python 類型新增自訂屬性和方法?
    使用自訂屬性和方法擴充內建Python 類型在Python 中,使用自訂方法或屬性擴充內建類型,例如字典可能看起來是個簡單的請求。然而,Python 的設計本身並不支援此類修改。與 JavaScript 的原型繼承機制不同,Python 內建的類型是靜態且不可變的。 替代方法:類子類化而直接向內置類...
    程式設計 發佈於2024-11-20
  • JavaScript 中的 eval() 和 new Function() 真的可以互換嗎?
    JavaScript 中的 eval() 和 new Function() 真的可以互換嗎?
    深入探討差異:JavaScript 中 eval() 和 new Function() 可以互換嗎? 在 JavaScript 中,我們常遇到這樣的函數eval() 和 new Function()。雖然它們的語法乍看之下似乎很相似,但仔細檢查就會發現它們的行為有根本差異。 考慮以下單語句函數:va...
    程式設計 發佈於2024-11-20
  • 掌握如何在 JavaScript 中實現雙向鍊錶
    掌握如何在 JavaScript 中實現雙向鍊錶
    Hi ?, welcome back. It's been exactly 6 days since we started this journey together. I want to believe it has been an awesome experience. Yesterday, w...
    程式設計 發佈於2024-11-20
  • 如何防止 Tomcat 7 中的 JDBC 資料來源記憶體洩漏?
    如何防止 Tomcat 7 中的 JDBC 資料來源記憶體洩漏?
    Tomcat 7 中的JDBC 資料來源記憶體洩漏使用JDBC 資料來源關閉Tomcat 7 時,使用者可能會遇到類似下列內容的警告訊息下面:SEVERE: The web application [/my_webapp] appears to have started a thread named...
    程式設計 發佈於2024-11-20
  • 是否有工具可以識別大型 C++ 專案中不必要的 #include 檔案?
    是否有工具可以識別大型 C++ 專案中不必要的 #include 檔案?
    在大型C 專案中發現不必要的#include 檔案在Visual Studio 2008 中龐大的C 專案中,無數檔案包含多餘的#include 指令。有時,這些 #include 只是遺留物,允許在刪除後進行編譯。在其他情況下,可以提前聲明類,從而允許將 #include 重新定位到 .cpp 檔...
    程式設計 發佈於2024-11-20

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3