什麼是 WordPress REST API?
WordPress REST API 是一個允許你使用 HTTP 請求 (例如 GET、POST、PUT、DELETE) 與 WordPress 網站交互的介面。 它本質上是一個橋樑,讓外部應用程式(無論是用 JavaScript、Python、PHP 或其他任何語言編寫的)能夠讀取和修改你的 WordPress 網站的內容、用戶、分類法等。 這意味著你可以使用 WordPress 作為後端,創建完全自訂的前端,例如單頁應用程式 (SPA)、移動應用程式或甚至連接到其他系統。
在過去,WordPress 主要是透過 PHP 模板直接生成 HTML 網頁。 REST API 的引入改變了遊戲規則,它使 WordPress 不僅僅是一個部落格平台,而是一個內容管理系統 (CMS),可以靈活地與各種不同的應用程式整合。
想像一下,你想要開發一個手機應用程式,顯示你 WordPress 網站上的最新文章。 透過 REST API,你的應用程式可以發送一個 HTTP GET 請求到 WordPress 網站,獲取文章數據(標題、內容、作者等),然後以你應用程式需要的任何格式顯示這些數據。 同樣地,你可以使用 REST API 讓使用者透過你的應用程式發表評論或創建新的文章。
REST 代表具象狀態傳輸 (Representational State Transfer),這是一種用於設計網路應用程式的架構風格。 REST API 的主要原則是使用標準的 HTTP 方法來執行操作,並使用標準的數據格式(通常是 JSON)來傳輸數據。
REST API 的基本操作(CRUD)
WordPress REST API 支援四種主要操作,通常被稱為 CRUD 操作:
- Create (POST): 用於在 WordPress 中創建新的資源,例如新的文章、用戶或分類。
- Read (GET): 用於從 WordPress 中檢索現有資源,例如獲取一篇特定的文章或列出所有文章。
- Update (PUT/PATCH): 用於更新 WordPress 中現有資源,例如修改文章的標題或內容。PUT 通常用於完全替換資源,而 PATCH 用於部分更新。
- Delete (DELETE): 用於從 WordPress 中刪除現有資源,例如刪除文章或用戶。
每個操作都使用特定的 HTTP 方法和端點 (endpoint) 來執行。 端點是 API 的 URL,你將向其發送請求。 例如,要獲取所有文章,你可能會使用以下端點:
/wp-json/wp/v2/posts
讓我們看一些實際的例子:
- 獲取所有文章:發送 GET 請求到
/wp-json/wp/v2/posts
。 這將返回一個 JSON 陣列,其中包含所有文章的數據。 - 獲取特定文章:發送 GET 請求到
/wp-json/wp/v2/posts/{文章ID}
,將{文章ID}
替換為你要獲取的文章的 ID。 - 創建新文章:發送 POST 請求到
/wp-json/wp/v2/posts
,並在請求正文中包含新文章的數據(標題、內容等),以 JSON 格式。 你需要驗證你的身份,這通常透過身份驗證外掛來完成。 - 更新現有文章:發送 PUT 或 PATCH 請求到
/wp-json/wp/v2/posts/{文章ID}
,並在請求正文中包含要更新的數據,以 JSON 格式。 同樣,你需要驗證你的身份。 - 刪除文章:發送 DELETE 請求到
/wp-json/wp/v2/posts/{文章ID}
,並驗證你的身份。
如何使用 WordPress REST API:實用範例
現在讓我們看一些使用 WordPress REST API 的實際範例。 以下範例使用 JavaScript 和 fetch
API,這是一種現代的 Web API,用於發出 HTTP 請求。
範例 1:獲取所有文章並顯示標題
fetch('/wp-json/wp/v2/posts')
.then(response => response.json())
.then(posts => {
posts.forEach(post => {
console.log(post.title.rendered); // 顯示文章標題
});
})
.catch(error => {
console.error('發生錯誤:', error);
});
這個例子發送一個 GET 請求到 /wp-json/wp/v2/posts
,獲取所有文章,然後遍歷文章陣列,並將每篇文章的標題顯示到控制台中。
範例 2:獲取特定文章並顯示內容
const postId = 123; // 將 123 替換為實際的文章 ID
fetch(`/wp-json/wp/v2/posts/${postId}`)
.then(response => response.json())
.then(post => {
console.log(post.content.rendered); // 顯示文章內容
})
.catch(error => {
console.error('發生錯誤:', error);
});
這個例子發送一個 GET 請求到 /wp-json/wp/v2/posts/{文章ID}
,獲取 ID 為 123 的文章,然後將文章內容顯示到控制台中。
範例 3:使用 Axios 庫發送 POST 請求創建文章
const axios = require('axios');
const data = {
title: '新的文章標題',
content: '這是一篇新的文章內容。',
status: 'publish' //可選:草稿(draft), 待審核(pending), 私人(private), 已發佈(publish)
};
const config = {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + btoa('username:password') //替換成你的使用者名稱和密碼(Base64 編碼)
}
};
axios.post('/wp-json/wp/v2/posts', data, config)
.then(response => {
console.log('文章已創建:', response.data);
})
.catch(error => {
console.error('創建文章時發生錯誤:', error);
});
注意:上面的範例僅用於演示,直接在前端程式碼中使用使用者名稱和密碼進行身份驗證是不安全的。在實際情況下,應使用更安全的身份驗證方法,例如 OAuth 2.0 或 JWT (JSON Web Tokens)。你可以使用 WordPress 外掛程式來實現這些方法。
安全性考量
在使用 WordPress REST API 時,安全性至關重要。 默認情況下,REST API 對於公共資料(例如文章列表)是可訪問的。但是,對於修改資料(例如創建、更新或刪除文章),需要進行身份驗證。
以下是一些重要的安全注意事項:
- 身份驗證:使用安全可靠的身份驗證方法。 不要直接在前端程式碼中使用使用者名稱和密碼。考慮使用 OAuth 2.0 或 JWT 等標準的身份驗證協議。
- 授權:確保只有經過授權的用戶才能執行特定操作。 驗證用戶是否具有修改特定資源的必要權限。
- 輸入驗證:仔細驗證所有來自客戶端的輸入,以防止 SQL 注入、跨站腳本 (XSS) 和其他安全漏洞。
- 限制請求速率:實施請求速率限制,以防止拒絕服務 (DoS) 攻擊。
- 使用 HTTPS:始終使用 HTTPS 來加密客戶端和伺服器之間的通信。
其他有用的端點和資源
WordPress REST API 提供了許多不同的端點,用於訪問各種資源。 以下是一些額外的有用端點:
/wp-json/wp/v2/users
:用於管理用戶。/wp-json/wp/v2/categories
:用於管理文章分類。/wp-json/wp/v2/tags
:用於管理文章標籤。/wp-json/wp/v2/media
:用於管理媒體檔案。/wp-json/wp/v2/comments
:用於管理評論。
你可以透過瀏覽你的 WordPress 網站的 /wp-json
端點來發現所有可用的端點。
功能 | 說明 |
---|---|
SEO 設定 | 最佳化標題與描述,讓文章在搜尋引擎中更容易被發現。 |
外掛安裝 | 透過 WordPress 儀表板管理外掛,增強網站功能。例如,可以用 REST API 驗證外掛。 |
佈景主題 | 選擇適合網站風格的主題,並確保主題與 REST API 相容。 |
常見問題解答
如何啟用 WordPress REST API?
WordPress REST API 預設情況下是啟用的。你無需執行任何特殊步驟即可啟用它。你只需將請求發送到正確的端點即可開始使用它。
我如何驗證我的 WordPress REST API 請求?
對於讀取公共資料,通常不需要身份驗證。 但是,對於修改資料,你需要使用身份驗證。 建議使用 OAuth 2.0 或 JWT 等安全方法,並避免直接在客戶端程式碼中使用使用者名稱和密碼。
REST API 只能用於獲取文章嗎?
不是的。REST API 可以用於管理各種資源,包括用戶、分類、標籤、媒體檔案和評論。你可以透過瀏覽你的 WordPress 網站的 /wp-json
端點來發現所有可用的端點。