Liferay 為了支援「前後端分離」與「多端整合」,提供了非常完整且層次分明 API 體系。可以分成以下四大類:
RESTful Web APIs (Headless APIs)
這是 Liferay 支援「前後端分離」最核心的 API。它是基於 OpenAPI (Swagger) 規範開發的去頭化(Headless)介面。
-
功能涵蓋:
- 內容管理 (Delivery):獲取結構化內容、部落格、文件檔案、圖片等。
- 管理功能 (Admin):建立站點、管理使用者、設定權限、自定義物件(Object)等。
-
技術特點:
- 輸出格式為 JSON。
- 支援 OAuth2 認證。
- 提供內建的 API Explorer,讓你直接在瀏覽器測試所有 API。
GraphQL API
Liferay 也支援 GraphQL,這對於前端開發者來說非常強大,因為它可以解決 REST API 常見的過度抓取(Over-fetching)問題。
- 優勢: 前端可以「自行定義」回傳的欄位結構。例如:我只需要文章的「標題」和「作者名稱」,API 就只會回傳這兩個欄位,節省流量並提升效能。
- 應用場景: 需要在一個請求中抓取多個關聯資料(例如:抓取分類清單及其下的所有文章內容)。
Liferay JS SDK
為了讓前端開發(尤其是 Client Extensions)更輕鬆,Liferay 提供了一套 JavaScript SDK。
- 作用: 它將繁瑣的 REST 請求封裝成簡單的 JS Function。
- 範例: 開發者直接呼叫 SDK 提供的物件方法,會自動處理身分驗證(Token)與請求標頭。
JSON Web Services (JSONWS)
這是 Liferay 長久以來存在的 API 機制。它將 Liferay 內部的 Java 服務(Service Layer)直接映射成 JSON 介面。
- 特點: 所有 Liferay 的底層 Java 方法都有對應的 JSONWS。
- 用途: 可以提供最完整的API method。