PHPMaker 支援 REST API,使您能夠執行 CRUD (建立、讀取、更新和刪除)生成的 Web 應用程式中的表。 您可以向 API 發出請求(例如通過 JavaScript 代碼),取得 JSON(JavaScript 物件表示法)形式的響應, 按照您的喜好解釋並呈現結果。 API請求的預設路徑是生成的應用程式下的“api”(即<mysite>/api)。
REST API 是在每個選取生成的表支援的清單、檢視、加入、編輯和刪除頁面的基礎上實現的。 支援的基本 API 操作有 加入 (建立)、 清單 / 檢視 (讀取)、 編輯 (更新)、 刪除 (刪除)、 登入 (驗證使用者,如果啟用了安全性)和 檔案 (取得檔案內容)。
從 PHPMaker 2023 開始, 匯出 還支援 API 操作。 您可以將表或報告匯出到檔案,並在以後使用 匯出 API 進行檢索。
以下示例顯示了與 API 的標準訊息交換 (使用demo資料庫的“cars”表進行演示):
示例 1 – 通過鍵取得記錄(檢視操作)
HTTP請求
取得 /api/view/cars/1
接受:應用程式/json
HTTP響應
200 好
示例 2 – 建立記錄(加入操作)
HTTP請求
POST /api/ 加入/汽車
商標=1&…
接受:應用程式/json
如果您的資料是 JSON,則 HTTP 請求應為:
POST /api/ 加入/汽車
{“商標”:1,…}
內容類型:application/json
接受:應用程式/json
HTTP 響應(成功)
200 好
HTTP 響應(失敗)
200 好
示例 3 – 匯出和檢索匯出的檔案(匯出操作)
1.匯出檔案並取得檔案ID
HTTP請求
GET /api/export/excel/cars?filename=…&save=1&output=0
接受:應用程式/json
HTTP響應
200 好
2.通過檔案ID檢索匯出的檔案內容
HTTP請求
取得 /api/export/575879b9-9c87-45de-9403-8c7e753981e5
HTTP響應
200 好
返回匯出的檔案內容。
POST /api/登入 取得 /api/登入
POST /api/登入 如果使用者從外部使用者端(不在生成的 Web 應用程式內)使用 REST API,則使用者需要首先登入。 登入 API 通過 JWT 令牌對使用者進行身份驗證, 使用 JWT 對使用者進行身份驗證。 有關詳細訊息,請參閱下面
/api/登入
使用者名=admin&密碼=master
參數
JWT 令牌的過期時間(小時)。 選修的。
登入後API過期時間的預設值 (秒) 。 如果不指定,則使用
結合使用 與expire 。 選修的。如果指定,則 JWT 僅對指定權限有效。 請參閱下表,其中列出了權限類型和值。
取得 /api/登入
如果 啟用了進階設定 “容許通過 URL 登入” ,則接受,例如
/api/login?使用者名=admin&密碼=master
參數
JWT 令牌的過期時間(小時)。 選修的。
登入後API過期時間的預設值 (秒) 。 如果不指定,則使用
結合使用 與expire 。 選修的。如果指定,則 JWT 僅對指定權限有效。 請參閱下表,其中列出了權限類型和值。
權限類型和值 下面列出了權限類型和值的清單。 要指定權限類型的組合,請將值相加。 例如,對於“清單 + 匯出”,請使用 8 + 1024(即 1032)
成功回復
響應失敗
401 未經授權
取得記錄清單,例如
/api/清單/汽車
參數
成功回復
響應失敗
取得 /api/export/{id}
GET /api/匯出/搜尋
GET /api/export/{類型}/{表} 從表中匯出記錄,例如
/api/export/excel/汽車
參數
成功回復
匯出時輸出=0:
不帶“儲存”參數匯出,或輸出=1:
<匯出的檔案內容>
響應失敗
檢視失敗響應清單
取得 /api/export/{id}
從id取得匯出的檔案,例如
/api/export/575879b9-9c87-45de-9403-8c7e753981e5
參數
成功回復
<匯出的檔案內容>
響應失敗
檢視失敗響應清單
GET /api/匯出/搜尋
搜尋匯出的檔案,例如
/api/export/search/?limit=1
參數
成功回復
搜尋輸出=0:
不使用“output”參數或output=1 進行搜尋:
<匯出的檔案內容>
響應失敗
檢視失敗響應清單
通過key取得單條記錄,例如
/api/檢視/汽車/1
參數
成功回復
檢視失敗響應清單
插入一條新記錄,例如
/api/加入/汽車
商標=1&…
參數
成功回復
檢視失敗響應清單
在使用者表中註冊一個新使用者,例如
/api/註冊
使用者名=新使用者&…
參數
成功回復
檢視失敗響應清單
通過鍵更新現有記錄,例如。
/api/編輯/汽車/1
商標=2&…
參數
成功回復
See failed response for list
GET /api/delete/{table}/{key} POST /api/delete/{table}
GET /api/delete/{table}/{key} Delete an existing record by key, e.g.
/api/delete/cars/1
Parameters
POST /api/delete/{table}
Delete multiple records by keys, e.g.
/api/delete/cars
key_m[]=1&key_m[]=2&…
Parameters
成功回復
檢視失敗響應清單
GET /api/file/{表}/{字段}/{鍵} GET /api/檔案/{表}/{路徑}
GET /api/file/{表}/{字段}/{鍵} 按主要模式取得檔案訊息,例如
/api/檔案/員工/照片/1
參數
GET /api/檔案/{表}/{路徑}
通過加密檔案路逕取得檔案資料,例如
/api/檔案/員工/xxx
參數
成功回復
對於 blob 欄位(例如 cars 表中的圖片欄位),具有正確內容類型的檔案欄位的二進位內容。
對於字串欄位(例如員工表中的照片欄位),檔案位置的 JSON 響應:
如果檔案路徑被加密:
Empty response
上傳檔案,例如
/api/upload
請參閱下面的示例。
參數
成功回復
檔案令牌和檔案訊息的 JSON 響應:
響應失敗
GET /api/permissions/{userLevelID} POST /api/permissions/{userLevelID}
GET /api/permissions/{userLevelID} 取得權限,例如
/api/權限/1
參數
POST /api/permissions/{userLevelID}
更新權限,例如
/api/權限/1
{“汽車”:264,…}
參數
Successful response
Get permissions:
Update permission:
響應失敗
REST API 是無狀態的。 每個API請求相互獨立,伺服器中不存儲任何會話資料 記錄 API 請求的現用的狀態。 要從 API 訪問受保護的資源, 操作取得 JSON Web 令牌 (JWT) 來對使用者進行身份驗證 您需要首先使用登入 , 然後在後續 API 請求中將 JWT 作為身份驗證標頭傳遞。
筆記
- 如果您在訪問受保護資源時不提供 JWT,您將收到 401 Unauthorized 響應。
- 每個 JWT 都有一個有限的時間跨度,因此您可以 令牌過期後需要重新對使用者進行身份驗證。
要了解有關 JWT 的更多訊息,請訪問 https://jwt.io/introduction/ 。
以下 JavaScript 展示瞭如何通過 JWT 從 API 取得受保護的資源。 首先對使用者進行身份驗證 點選 登入 按鈕。 然後點擊 取得訂單記錄 按鈕即可取得訂單記錄 這是受保護的資源。
要上傳檔案,您可以使用 上傳 操作(見上文)。 您可以通過 HTML 5 上傳檔案,例如
如果你想讓使用者選取多個檔案,只需 使用multiple 在 input 元素上 加入[]即可: 屬性並在名稱中
筆記
- 當使用者選取檔案時, files 輸入元素的 屬性是一個FileList 物件,其中內含 File物件。 表示使用者選取的檔案的
- 如果檔案上傳成功,您將獲得帶有檔案令牌的成功響應(見上文),然後您可以使用檔案令牌作為欄位的欄位值來進行加入 或 編輯 操作 。
- 不支援將多個檔案上傳到 BLOB 欄位。
除了內建 API 操作之外,您還可以通過 Api_Action 伺服器事件加入自己的 API 操作(請參閱 伺服器事件和使用者端腳本 )。
示例 1 – 你好世界
使用者現在可以訪問 URL /api/hello/John 來取得響應文字 “你好約翰”。
筆記
示例 2 – 按名稱取得產品
現在可以使用以下 JavaScript 訪問產品資料:
中自訂 REST API 的以下設定 您可以在進階設定 。
如果啟用,則 IIS/Apache 將發出 Access-Control-Allow-Origin、Access-Control-Allow-Headers 和 Access-Control-Allow-Methods。 預設為 false。
筆記
- 對於 Apache, 必須啟用mod_headers 才能使此設定起作用。
- 如果禁用,標頭將由 CORS 中間件發出。
Access-Control-Allow-Headers 標頭。