WordPress 學習筆記 : Wordpress REST API (一) : Handbook

REST API Handbook:

WordPress REST API 提供了 wordpress 網站資料數據的 API , 使用 Json 的格式與開發者產生 ‘接收’與”發送”的互動(sending and receiving),This enables developers to create, read and update WordPress content from client-side JavaScript or from external applications, even those written in languages beyond PHP

Why use the WordPress REST API :

  • 任何支援 HTTP requests 與 json 格式的語言都可以藉由 REST API 與 wordpress 做互動 (Node.js to Java and beyond)。
  • 也可以取代 wordpress core 裡的 admin-ajax API 以達到更好的結果
  • you can more easily structure the way you want to get data into and out of WordPress

Key Concepts:

為了能更清處理解 REST API,我們分開說明的一些 “關鍵概念” 與 “術語”

  • Routes/Endpoints
  • Requests
  • Responses
  • Schema
  • Controller Classes

Routes & Endpoints :

在 REST API 中,他的 route 有著 context 的關聯,會根據不同的 URL 產生不同的 HTTP methods,而 個別的 HTTP methods 與所對應 route 的組合 ,我們稱呼它為 Endpoints (端點)

The mapping of an individual HTTP method to a route is known as an “endpoint”.


假設我們發了一個 GET request 到 http://bonze.tw/wp-json/ , 會得到一個 json 的 responses , 告訴我們什麼 Route 是可用的,且哪條 Route 上哪個 Endpoints 是可行的。 而 /wp-json/本身就是個 Route,當 GET request 發生時,將會產生對應的 Endpoints , 去顯示 REST API 產生的結果索引。

/wp-json/ is a route itself and when a GET request is made it matches to the endpoint that displays what is known as the index for the WordPress REST API

後續說明,將學習如何 register 自己的 Route 與 Endpoints

Requests :

在 WordPress REST API 基礎架構中有一個主要的類別為: WP_REST_Request , 此類別用來存取當前 Requests 的資訊。

Requests 可藉由 submitted remotely via HTTP 或 wordpress 內部 PHP 的編寫,當對 registered route 發出 HTTP request,將自動生成 WP_REST_Request objects,將 針對 request 中的特定資料,進行判斷且透過 API 取出,There are a lot of neat things you can do using the request class。

Responses :

當從 API 取得 Responses 的資料 , WP_REST_Response 的類別提供了從 Endpoints response data 互動的方法,可以返回所需的數據,它們也可以用來返回 errors

Schema :

每一個 Endpoints Requests 提供的資料結構都有些許的不同,而這些些許的不同已經被定義在 API Schema之中,提供結構化的數據與所有屬性以及可以接受的輸入參數的綜合列表,也提供了一定的安全性,因為它能讓我們段驗證後的 HTTP required 給 API

Controller Classes :

WordPress REST API 有許多的 moving parts 是必須一起 work 的,Controller classes,將所有的 moving parts 放在一起 , 使用 controller class 可使你方便管理 registration of routes & endpoints, handle requests, utilize schema, and generate API responses