接下來,系統會要求您輸入一些基本信息,包括名稱、標簽和描述,這些信息會出現在屏幕截圖的下方區域。其中,標簽和描述主要用于管理界面中的參考和識別,而名稱則具有特別的重要性,因為它將作為 API URL 的一部分,稍后您就會看到這一點。

最后,請點擊“Config”選項卡。在這個頁面上,您需要填寫數據庫的連接憑據(請參考下面的屏幕截圖)。這些信息對于您來說可能并不陌生;您需要提供數據庫的主機名、用戶名、密碼以及要連接的數據庫名稱。
此外,系統還允許您選擇性地指定其他配置選項,例如驅動程序參數、時區設置以及緩存偏好等。不過,在本教程中,我將僅關注必填字段,并保留所有可選功能為默認設置。

獲取到所需的數據庫連接憑據后,您只需點擊屏幕底部的“Save”按鈕,令人難以置信的是,REST API 就已經被成功創建了!
在創建 API 的同時,DreamFactory 還會為您的 API 自動生成一套全面的交互式 Swagger 文檔。要訪問這些文檔,您只需點擊管理界面頂部的“API Docs”選項卡,然后按照名稱選擇您剛剛創建的新服務。一旦進入,您將發現多達44個終端節點可供使用,這些節點支持執行存儲過程、進行CRUD(創建、讀取、更新、刪除)操作、查詢視圖等多種功能。值得注意的是,以下屏幕截圖僅僅展示了新生成的 MySQL REST API 端點中的一小部分!

DreamFactory 所生成的所有 API 都至少會受到 API 密鑰的自動保護。在身份驗證方面,您可以選擇使用基本身份驗證、單點登錄(SSO)或目錄服務(如 LDAP 和 Active Directory)。此外,您還可以將每個 API 密鑰和/或用戶與一個特定的“角色”相關聯,這個角色將精確決定用戶能夠訪問哪些服務。更進一步,您還可以將交互限制在特定的數據庫表或表集合、特定的端點,甚至是對允許的 HTTP 方法進行限制。
在 API 的開發和集成過程中,保護那些代表 API 與 MySQL 數據庫進行交互的用戶是至關重要的。
現在,讓我們以一個實例來說明如何創建一個新角色,這個角色將關聯的 API 密鑰限制為在新創建的 MySQL API 中以只讀方式與單個表進行交互。為此,請按照以下步驟操作:首先導航到“Roles”選項卡,并點擊“Create”按鈕。接下來,您將看到類似下面屏幕截圖中的界面。在截圖中,我已經為這個角色指定了一個名稱和描述,并通過勾選“Active”(活動)復選框來激活它
然后,請點擊“Access”選項卡。在這里,您可以定義角色能夠執行的操作。在下面的屏幕截圖中,您可以看到我已經將角色的權限限制為只能與 MySQL 服務交互,并且在該服務中,角色僅能通過 GET 方法與“_table/employees*”終端節點進行交互。一切已鎖定,確保安全!

單擊“Save”按鈕以保存所創建的角色。接下來,我們的任務是創建一個新的 API 密鑰,并將這個密鑰與我們剛剛創建的角色進行關聯。為了完成這一步,請按照以下操作進行:首先,點擊位于 API 類型下拉列表下方的“API 密鑰”選項卡;其次,在 API 密鑰列表中選擇一個(如果是首次創建,則直接操作即可);然后,點擊“+”按鈕以新增一個 API 密鑰。在新增 API 密鑰的界面中,為您的應用程序分配一個具有描述性的名稱和詳細的描述,確保將其狀態設置為“Active”。然后,在角色分配部分,選擇我們之前為 MySQL 設置的默認角色,就像我在下面的屏幕截圖中展示的那樣。
關于應用程序位置設置,如果您打算通過 Web 應用、移動應用或其他 Web 服務來與 API 進行交互,那么您應該選擇“無需存儲”這一選項。這意味著 API 密鑰將不會與特定的設備或位置進行綁定,從而提供了更大的靈活性。

點擊“Save”按鈕后,您將會被帶回到 Apps 的索引頁面。在這個頁面上,您將能夠看到剛剛創建的新 API 密鑰。為了方便日后使用,建議您將這個密鑰復制到文本文件中保存起來!
在能夠從 DreamFactory 管理界面外部成功測試 API 之前,我們還需要完成一個關鍵的配置步驟,那就是為新 API 啟用 CORS(跨域資源共享)。為了操作方便,您可以選擇使用默認的 CORS 設置,就像我在下面的屏幕截圖中所展示的那樣。這樣的設置將允許來自所有網絡地址的 API 請求通過,從而方便您進行測試和集成工作。

完成 API 的生成、API 密鑰的創建與角色的關聯,以及 CORS 的配置之后,您就可以著手通過客戶端與 API 進行交互了!我個人在 MacOS 系統上傾向于使用 Insomnia 來進行 HTTP 測試,當然,Postman 也是另一個廣受歡迎的選擇。
在以下的屏幕截圖中,我展示了如何使用 Insomnia 發起一個 GET 請求,以訪問 /api/v2/_table/employees 這個終端節點。

值得注意的是,我們已經為此 API 密鑰設置了權限限制,即僅允許使用 GET 方法與 /api/v2/_table/employees/* 端點進行交互。因此,如果我們嘗試通過 POST 方法向該表發送數據,將會收到一個 401(未授權)狀態碼的響應,正如以下屏幕截圖所展示的那樣。


顯然,DreamFactory 并非創建 MySQL REST API 的唯一選擇。盡管手動編碼的方式耗時更長且難度更大,但它仍然是構建此類 API 的另一種可行方法。然而,在手動開發 API 的過程中,開發者還需關注 API 的安全性等其他問題。以下是一些關于如何著手手動編寫 API 的簡要建議。
構建 MySQL REST API 的首要步驟是搭建一個 Web 服務器環境。您可以選擇 Apache 或 Nginx 等 Web 服務器來處理客戶端的 HTTP 請求,并返回相應的內容作為響應。同時,您還需要在服務器上安裝 PHP,這是一種流行的服務器端腳本語言,能夠與 MySQL 數據庫進行交互,以實現數據的檢索或存儲。此外,MySQL 作為關系型數據庫管理系統,能夠在表中存儲和管理數據。當這些組件全部安裝并配置完畢后,您就可以開始著手構建 REST API 了。
數據庫是數據的集合,這些數據以結構化的方式(如包含列和行的表)進行組織。MySQL 作為一種流行的關系數據庫管理系統,允許用戶創建并管理這些數據庫和表。
在 MySQL 中新建數據庫,您可以選擇使用 MySQL 命令行界面執行 CREATE DATABASE 命令,或者借助 phpMyAdmin 等工具來完成。
為了從 PHP 連接到 MySQL 數據庫,您需要使用 MySQLi、PDO 等擴展。一旦連接建立,您就可以執行 SQL 查詢,從數據庫中提取所需數據。這些 SQL 查詢需要精心設計,以確保能夠檢索到計劃通過 API 公開的數據,并且必須采用參數化查詢,從而有效防范 SQL 注入攻擊。
數據從數據庫檢索出來后,您可以利用 PHP 的內置函數,將其轉換成 JSON 格式。JSON 是一種輕量級的數據交換格式,易于解析,且廣泛兼容多種編程語言。
PDO 是一個功能強大且靈活的 PHP 擴展,它提供了訪問各種數據庫的統一接口。PDO 支持多種數據庫驅動程序(例如 MySQL),并具備預編譯語句和參數綁定等特性,這些都有助于防范 SQL 注入攻擊。
若要使用 PDO 連接 MySQL 數據庫,您需要創建一個 PDO 對象,并傳入數據庫的連接信息。隨后,您可以調用 prepare() 方法來準備 SQL 語句,使用 bindParam() 或 bindValue() 方法來綁定參數(如果適用),最后通過 execute() 方法執行該語句。執行完成后,您可以利用 fetch()、fetchAll() 或 fetchColumn() 等方法檢索查詢結果。
json_encode() 是 PHP 的一個內置函數,它能夠將數據轉換為 JSON 格式的字符串。您可以向該函數傳遞任何數據類型(例如數組或對象),它將被轉換成 JSON 字符串,這種格式非常便于客戶端應用程序進行解析和使用。
在獲得 JSON 字符串后,您需要通過設置適當的 HTTP 頭來將其輸出到客戶端。在 PHP 中,這可以通過 header() 函數來實現,該函數允許您指定內容類型和其他有關響應的元數據。例如,為了輸出 JSON 數據,您應該將 Content-Type 頭設置為 "application/json"。
通過將數據以 JSON 格式輸出,并設置正確的 HTTP 頭,您可以確保客戶端應用程序能夠輕松地使用 REST API,并遵循標準的 Web 通信規范。
HTTP 請求是客戶端(例如,Web 瀏覽器或移動應用)與您所構建的 API 進行數據請求或執行其他操作的主要通信手段。為了妥善處理這些請求,您需要編寫 PHP 代碼,使其能夠接收請求并返回相應的響應。
PHP 提供了一系列函數,幫助您獲取當前請求的相關信息。例如,$_SERVER 變量包含了 HTTP 方法(GET、POST 等)、URL 路徑、查詢參數以及請求體數據等關鍵信息。同時,$_GET 和 $_POST 數組則分別用于存儲 GET 和 POST 請求中的參數。
在處理不同類型的請求時,您需要編寫相應的 PHP 代碼,以分析傳入的數據并確定執行的操作。例如,若客戶端通過 GET 請求從 API 獲取數據,您的代碼可能會執行 SQL 查詢來檢索數據,并將其作為 JSON 格式的響應返回。若客戶端通過 POST 請求創建新記錄,您的代碼則可能會將新數據插入 MySQL 數據庫,并返回操作成功的消息。
在 API 中實施有效的錯誤處理和驗證至關重要,這要求您編寫能夠檢測并響應錯誤,同時驗證用戶輸入的 PHP 代碼。PHP 提供了多個內置函數,助力您進行錯誤處理,例如 trigger_error() 用于觸發一個用戶級別的錯誤/警告/通知信息,而 set_error_handler() 則允許您設置一個用戶自定義的錯誤處理函數。
在驗證方面,您可能需要借助正則表達式、PHP 過濾器或自定義驗證函數來確保用戶輸入的數據符合預期格式和范圍。通過實施嚴格的錯誤處理和驗證機制,您可以顯著提升 API 的穩健性和安全性。
要將 API 部署上線,您需將 PHP 文件及任何必需資源(例如 CSS、JavaScript 文件或圖像)上傳至您的 Web 服務器。這一步驟可能還需根據您的 Web 服務器配置調整 .htaccess 文件,以確保 API 路由準確無誤。
一旦 API 部署完成,您即可借助 cURL 或 Postman 等工具來對其進行測試。這些工具功能強大,能讓您輕松地向 API 發送 HTTP 請求,并即時查看響應數據。通過它們,您可以測試各種請求類型(例如 GET、POST、PUT 或 DELETE),驗證錯誤處理與數據驗證機制的有效性,并確保 API 能夠以正確的格式(如 JSON 或 XML)返回準確無誤的數據。
在測試 API 時,請重點關注性能、安全性及可用性。您應在不同環境下(例如高流量時段或網絡狀況不佳時)對 API 進行測試,以確保其響應迅速且運行穩定。同時,務必檢查 API 是否存在潛在的安全隱患(例如 SQL 注入或跨站腳本攻擊),并確保 API 的設計便于客戶端使用與理解。
下面是一個從 MySQL 數據庫檢索數據的簡單 REST API 的示例 PHP 代碼:

原文鏈接:https://blog.dreamfactory.com/create-a-mysql-rest-api-in-minutes-using-dreamfactory