WordPress REST API自定義路由:擴展API功能的強大工具
本文探討WordPress REST API的自定義路由功能,展示如何創建定制化的API解決方案。 與僅使用默認路由相比,自定義路由提供了更精細的控制和擴展性。
核心要點:
register_rest_route()
函數,結合rest_api_init
動作,即可添加自定義路由。 需指定命名空間、路由路徑以及包含方法、回調函數和權限信息的端點數組。 超越默認路由:構建無限可能
關於WordPress REST API的大部分討論都集中在查詢默認路由上,這使得它看起來像一個單一的API,例如Twitter API。 然而,WordPress REST API並非單一API,而是數百萬個高度可定制的API的集合,本身也可以作為構建API的工具。 默認路由是眾多站點需求的折中方案,並非所有任務都能僅靠默認路由完成。
就像WordPress不僅僅是全局WP_Query對像一樣,REST API也不僅僅是默認API。 只使用默認路由就像在傳統的WordPress項目中從不創建自己的WP_Query對象,或覆蓋pre_get_posts
中的默認查詢一樣。雖然可行,但並非所有工作都能僅靠默認的WordPress URL路由來完成。
REST API同樣如此。 REST API的聯合首席開發者Ryan McCue曾提到,該項目的第二版分為兩部分:默認路由和創建RESTful API的基礎架構。默認路由為創建自定義路由提供了很好的示例。
添加路由:register_rest_route()
函數
REST API第二版引入了一個名為register_rest_route()
的新函數,允許向REST API添加路由並傳入端點數組。 對於每個端點,不僅要提供處理請求的回調函數,還可以定義查詢中所需字段,包括默認值、清理和驗證回調函數以及單獨的權限回調函數。
本文將重點介紹回調函數、字段參數和權限檢查這三個方面,它們展示了API的架構,並通過一個示例演示如何創建一個自定義路由,其中包含兩個端點,用於顯示由Easy Digital Downloads (EDD)驅動的電子商務網站中的產品信息。
設置路由:命名空間和路由路徑
定義自定義路由時,需在rest_api_init
動作中使用register_rest_route()
函數。 該函數接受四個參數:
命名空間: 所有路由都必須命名空間化,作為“wp-json”之後下一個URL段。 默認路由的命名空間為wp
。 命名空間避免了路由衝突。
路由路徑: 命名空間後的URL。 例如,“/products”或“/products/(?P
端點數組: 定義路由的端點,包含方法、回調函數、參數等信息。
override
參數(可選): 布爾值,用於處理與已定義路由的衝突。 默認為false
,嘗試合併路由;設置為true
則替換已聲明的路由。
設置端點:方法和字段
端點需要定義一個或多個HTTP傳輸方法(GET/POST/PUT/DELETE)。 可以使用WP_REST_Server
類中的常量來定義方法,例如WP_REST_Server::READABLE
(只允許GET請求)或WP_REST_Server::ALLMETHODS
(允許所有方法)。
在定義字段時,可以指定字段的默認值、清理回調函數等。 這使得回調函數能夠信任它接收到的數據。
回調函數和權限回調函數
每個端點的回調函數(在callback
鍵中指定)是請求將被分派到的方法(如果權限回調函數通過)。 權限回調函數(在permission_callback
鍵中指定)檢查當前用戶是否有權訪問端點。
處理和響應請求
回調函數接收WP_REST_Request
對象,可以使用get_params()
方法獲取已清理和驗證的參數。 可以使用rest_ensure_response()
函數創建WP_REST_Response
對象,確保響應是正確的JSON格式,並包含必要的標頭。
總結:自定義API,無限可能
WordPress REST API的默認路由非常有用,但自定義路由提供了更強大的控制和擴展能力。 當默認路由無法滿足需求時,創建自定義路由是一個有效的解決方案。
以上是將自定義路線添加到WordPress REST API的詳細內容。更多資訊請關注PHP中文網其他相關文章!