掌握 WordPress REST API:驗證與整合

什麼是 REST API?

REST API(表現狀態傳輸應用程式介面) 是一套允許不同軟體系統透過網際網路進行通訊的規則。將 API 想像成連接兩個系統的橋梁,允許它們請求和分享資訊。

讓我們來分解 REST API 的元件:

  • API(應用程式介面):API 就像是餐廳的菜單。它提供客戶端可以請求的操作清單,而伺服器 (就像廚師) 則執行這些操作並傳回回應。
  • REST(表現狀態傳輸):REST 是一套透過 HTTP 建立網路服務的準則,使用 GET、POST、PUT 和 DELETE 等標準作業。

REST API 如何運作?

REST API 允許用戶端(如您的瀏覽器或應用程式)向伺服器傳送請求,並接收資料作為回報。讓我們逐步分析其運作方式:

  1. 客戶要求:客戶端(您的應用程式)向伺服器上的特定 URL 傳送 HTTP 請求。此 URL 代表資源 (例如使用者、產品等)。
    • 範例:GET https://api.example.com/users 請求使用者清單。
  2. 伺服器處理:伺服器接收請求、處理請求、擷取資料(通常來自資料庫)並準備回覆。
  3. 伺服器回應:伺服器傳送 HTTP 回應給用戶端。此回應包括
    • 狀態代碼:表示請求是否成功(例如,200 OK 表示成功,404 Not Found 表示資源不存在)。
    • 資料:通常以 JSON 格式表示請求的資源。

基本驗證: 它是什麼,為什麼重要?

基本驗證 是用戶在請求 API 時驗證身份的簡單方法。在此方法中,用戶端會傳送編碼在請求標頭裡的使用者名稱和密碼,然後由伺服器驗證。

為什麼它很重要?:驗證可確保只有授權使用者才能存取資源,防止未經授權的使用者取得存取權。

如何運作?:當用戶端向伺服器傳送要求時,它會包含一個 授權 標頭,其中包含以 Base64 編碼的憑證。

範例:

授權:Basic dXNlcm5hbWU6cGFzc3dvcmQ=

伺服器會解碼此標頭,並檢查使用者名稱和密碼是否有效。

WordPress REST API 的驗證方法

當使用 WordPress REST API, 有幾種認證方法可以用來確保要求的安全性:

1:基本驗證

  • 此方法通常用於測試和簡單的應用程式。您在請求頭中傳送您的 WordPress 使用者名稱和密碼。
  • 外掛程式提示:要在 WordPress 中使用基本驗證,您可以使用 基本驗證外掛程式.基於安全考量,此方法不建議用於生產環境。

2:Cookie 驗證

  • 當您希望目前登入的使用者存取 API 時,會使用 Cookie 認證。當使用者登入 WordPress 時,會建立一個 session cookie,API 會使用此 cookie 來驗證使用者。
  • 使用個案:這通常用於與 WordPress 網站在同一網域上執行的前端 JavaScript 應用程式。

3:OAuth 驗證

  • OAuth 是一種更安全的方法,可讓第三方應用程式代表使用者存取 WordPress REST API,而無需分享使用者的密碼。
  • 範例外掛程式:您可以使用 WordPress 的 OAuth 1.0a 伺服器外掛程式來實施基於 OAuth 的驗證。

4:應用程式密碼

  • WordPress 也支援 應用程式密碼,這是 API 存取的唯一密碼。您可以在 WordPress 面板中產生應用程式密碼,這些密碼可用於驗證。
  • 如何產生:前往 WordPress 中的使用者個人資料,向下捲動至「應用密碼」部分,然後產生新密碼。

使用 WordPress REST API 進行最大化開發

WordPress REST API 可以讓您從 WordPress 面板之外與您的 WordPress 網站互動,從而創建功能強大的 Web 應用程式。以下是如何讓您發揮最大的開發效益:

1:自訂端點: 您可以建立自訂端點,從 WordPress 網站揭露預設可能無法取得的其他資料。

  • 如何建立:使用 register_rest_route() 函數在您的 WordPress 主題或外掛中加入新的端點。

範例:

add_action('rest_api_init', function() {
  register_rest_route('myplugin/v1', '/custom-data/', array(
    'methods' => 'GET'、
    'callback' => 'my_custom_data_callback'、
  ));
});

function my_custom_data_callback() {
  return new WP_REST_Response(array('data' => 'Hello, world!'), 200);
}

2:JavaScript 整合: 使用 JavaScript 向 REST API 傳送請求,以建立動態、互動的使用者體驗。例如,您可以建立一個 React 或 Vue.js 應用程式,透過 REST API 與 WordPress 後端互動。

實例:試想一下,建立一個自訂的評論系統,使用者不需重新載入頁面即可發表評論,而這一切都透過 JavaScript 與 REST API 進行互動。

使用 JavaScript 傳送驗證請求

要使用 JavaScript 傳送驗證的要求,您必須在要求標頭中包含正確的憑證或識別碼。例如

fetch('https://api.example.com/users', {
  method: 'GET'、
  headers:{
    'Authorization': 'Basic ' + btoa('username:password')、
    'Content-Type': 'application/json'.
  }
})
  .then(response => response.json())
  .then(data => console.log(data));

在本範例中,btoa() 函式以 Base64 編碼憑證,用於主要驗證。

Cookie 驗證

當使用 cookie 驗證時,您可以使用 WordPress 登入使用者的會話 cookie 來存取 REST API。以下是如何運作的逐步範例:

  1. 使用者登入 使用者登入您的 WordPress 網站後,WordPress 會在使用者的瀏覽器中設定認證 cookie。
  2. 傳送要求:當您的 JavaScript 程式碼要求 REST API 時,瀏覽器會在要求標頭中包含 cookie,WordPress 就會知道是哪個使用者提出要求。

使用 WordPress HTTP API 傳送請求

您也可以使用 WordPress HTTP API 從您的 WordPress 網站傳送請求。HTTP API 是 WordPress 提供的一套功能,用來與 REST API 互動。

傳送 GET 請求的範例:

$response = wp_remote_get('https://api.example.com/users');
if (is_wp_error($response)) {
  $error_message = $response->get_error_message();
  echo "Something went wrong: $error_message";
} else {
  $body = wp_remote_retrieve_body($response);
  echo $body;
}

本範例使用 wp_remote_get() 函式傳送 GET 請求到外部 API 並擷取回應。

摘要

在本指南中,我們涵蓋了

  • 什麼是 REST API、 以及它如何允許不同的系統進行溝通?
  • REST API 如何運作包括如何提出和處理請求。
  • 驗證方法例如基本驗證、cookie 驗證、OAuth 和應用程式密碼,以及它們為何不可或缺。
  • WordPress REST API 驗證包括如何使用 JavaScript 和 PHP 傳送驗證的要求。

常見問題集:關於 REST API 和驗證的常見問題

  1. 我可以在沒有認證的情況下使用 REST API 嗎?
    • 是的,但只適用於公開資料。對於任何敏感資料,您需要適當的驗證。
  2. 基本驗證是否安全?
    • 基本驗證對於生產而言並不安全,因為憑證是編碼而非加密的。它更適合測試或透過 HTTPS 使用。
  3. 應用程式密碼是用來做什麼的?
    • 應用程式密碼可驗證 API 請求,而無需分享您的 WordPress 主要密碼。它們有助於整合第三方應用程式。

下一步

  • 實務驗證:嘗試在本機 WordPress 網站中實施不同的驗證方法。
  • 建立自訂端點:嘗試在 WordPress 中建立自訂端點,以擴充 REST API 的功能。
  • JavaScript 與 PHP 整合:練習使用 JavaScript (例如 fetch) 和 PHP (使用 WordPress HTTP API) 傳送要求。
  • 使用 Postman 進行測試:使用下列工具 郵差 來測試您的 REST API 端點,並練習傳送驗證的要求。

祝您編碼愉快,繼續探索!REST API 是一個強大的工具,了解如何使用它,將為網頁開發開啟無限的可能性。

Related Articles

Responses

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *