根據 StackOverflow 2022 年的調查,46% 的專業開發人員將 MySQL 評為工作區中最受歡迎的資料庫。作為程式設計師,我們不應該為重複編寫程式碼而煩惱,否則這些程式碼是容易取得的、健壯的、經過充分測試的。
然而,這個問題在 REST API 領域仍然持續存在,儘管實現過程到目前為止是死記硬背、重複性的、容易出錯和疏忽的。由於以下幾個原因,這種疏忽代價高昂:
幸運的是,對於我們程式設計師來說,DreamFactory 平台可以透過為 API 文件、生成和安全性提供集中式解決方案,輕鬆為您的團隊免除所有這些麻煩以及更多麻煩。在本教程中,您將了解為 MySQL 資料庫建置、保護和部署 REST API 是多麼容易。
目錄
MySQL API 是一組函數、協定和工具,可讓開發人員透過其應用程式或腳本以程式設計方式與 MySQL 資料庫互動。
該 API 為應用程式提供了一種向 MySQL 資料庫發送查詢、檢索資料、修改資料以及執行各種資料庫操作的方法。它充當應用程式程式碼和資料庫伺服器之間的中間層,促進無縫通訊和資料操作。
常見的 MySQL API 包括 MySQL Connector/ODBC、MySQL Connector/J(用於 Java)、MySQLi(用於 PHP)以及許多其他 API,每個 API 都針對特定的程式語言或框架量身定制。
MySQL API 透過促進應用程式和 MySQL 資料庫之間的交互,在軟體開發中發揮關鍵作用。
這些 API 充當“中間人”,抽象資料庫操作的複雜性並為開發人員提供標準化介面。它們的意義在於使應用程式能夠有效地儲存、檢索、修改和管理資料。
MySQL API 提供與各種程式語言和框架的相容性,讓開發人員可以使用他們喜歡的工具使用 MySQL。它們透過提供預先準備語句和輸入驗證等功能來增強安全性,以防止 SQL 注入等常見安全漏洞。
連線池、快取等效能最佳化功能有助於提高資料庫互動效率。 MySQL API 提供的可移植性意味著應用程式可以轉換到不同的資料庫系統,而無需進行重大程式碼修改,而其可擴充性功能使它們適合處理增加的工作負載。
MySQL API 受益於 MySQL 開發者社群的廣泛支持,確保為開發者提供豐富的資源、程式庫和工具。
DreamFactory 可以為多種資料庫產生 REST API,其中包括 MySQL、Microsoft SQL Server、Oracle、PostgreSQL 和 MongoDB。
為此,您需要登入 DreamFactory 管理介面,導覽至 Services,然後點擊位於左側的 Create 按鈕進入服務建立介面畫面。從那裡,您將透過導覽至 API Generation > 選擇 MySQL 服務類型。資料庫,然後從我們的資料庫選項中選擇 MySQL(請參閱下面的螢幕截圖)。
接下來,系統將提示您提供名稱、標籤和描述(如下螢幕截圖)。後兩者僅用於管理介面中的參考目的,但是名稱值特別重要,因為您很快就會看到它將包含 API URL 的一部分。
最後,點選設定標籤。在這裡,系統將提示您提供資料庫連接憑證(請參閱下面的螢幕截圖)。這應該不是什麼新鮮事;您將提供主機名稱、使用者名稱、密碼和資料庫。此外,您還可以選擇指定其他配置特徵,例如驅動程式選項、時區和快取首選項。出於本教學的目的,我將堅持使用必填字段,並保留可選功能不變。
憑證就位後,只需按下螢幕底部的「儲存」按鈕,不管你相信與否,REST API 已產生!
除了 API 之外,DreamFactory 還將為您的 API 自動產生一組廣泛的互動式 Swagger 文件。您可以透過點擊管理介面頂部的「API 文件」選項卡,然後按名稱選擇新產生的服務來存取它。您將看到 44 個端點,可用於執行預存程序、執行 CRUD 操作、查詢檢視等等。例如,下面的螢幕截圖僅顯示了新產生的 MySQL REST API 端點的一小部分!
所有 DreamFactory 產生的 API 都會自動受到(至少)API 金鑰的保護。您可以選擇使用基本驗證、SSO 或目錄服務(LDAP 和 Active Directory)對使用者進行驗證。此外,您可以將每個 API 金鑰和/或使用者與一個「角色」相關聯,該角色準確地確定允許使用者存取哪些服務。不僅如此,您還可以限制與特定資料庫表或一組表、特定端點的交互,甚至限制允許哪些 HTTP 方法。
保護負責代表 API 與 MySQL 資料庫互動的使用者的安全性是 API 開發和整合過程中極為重要的一環。請參閱我們關於使用 MySQL 權限和 DreamFactory 改進資料安全性的其他建議
作為範例,讓我們建立一個新角色,將關聯的 API 金鑰限制為在新建立的 MySQL API 中以唯讀方式與單一表進行互動。為此,請導航至“角色”選項卡,然後按一下“建立”按鈕。您將看到以下螢幕截圖中的介面。
接下來,按一下「存取」標籤。您可以在此處定義角色可以做什麼。在下面的螢幕截圖中,您將看到我已將角色限制為與 MySQL 服務交互,並且在該服務中,角色只能透過 GET 方法與 _table/employees* 端點進行交互。寶貝,我們處於封鎖狀態!
點選儲存按鈕儲存角色。現在我們將建立一個新的 API 金鑰並將該金鑰與該角色相關聯。為此,請按一下 API 類型下拉清單下的 API 金鑰標籤並選擇 API 金鑰,然後按一下「+」按鈕。為您的新應用程式指派名稱和描述,確保將其設為 Active,然後將其指派為 MySQL 的預設角色,就像我在下面的螢幕截圖中所做的那樣。關於應用程式位置設置,假設您計劃透過網路或行動應用程式或其他網路服務與 API 進行交互,那麼您需要選擇「無需儲存」。
按下儲存按鈕,您將返回到應用程式索引螢幕,可以在其中複製新的 API 金鑰!將密鑰複製到文字檔案中以供以後參考。
在能夠從 DreamFactory 管理介面外部測試 API 之前,我們還有最後一個設定步驟。您需要為新 API 啟用 CORS(跨來源資源共用)。您可以在“配置”下拉清單中找到它並選擇“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 的簡短提示。
建立 MySQL REST API 的第一步是設定一個 Web 伺服器,例如 Apache 或 Nginx,它將處理來自客戶端的傳入 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 header 設定為「application/json」。
透過以 JSON 格式輸出資料並設定適當的 HTTP 標頭,您可以確保客戶端應用程式可以輕鬆使用您的 REST API 並遵守標準 Web 約定。
HTTP 請求是客戶端(例如網頁瀏覽器或行動應用程式)與 API 通訊以請求資料或執行其他操作的方式。要處理這些請求,您需要編寫可以處理請求並傳回適當回應的 PHP 程式碼。
PHP 提供了幾個可用來存取有關目前要求的資訊的函數,例如 $_SERVER、$_GET、$_POST 和 $_REQUEST。這些變數包含 HTTP 方法(例如 GET 或 POST)、URL 路徑以及任何查詢參數或請求正文資料等資訊。
為了處理不同類型的請求,您需要編寫 PHP 程式碼來分析傳入的資料並確定要採取的操作。例如,如果客戶端發出 GET 請求以從 API 檢索數據,您的程式碼可能會執行 SQL 查詢來檢索資料並將其作為 JSON 回應傳回。如果用戶端發出 POST 請求來建立新記錄,您的程式碼可能會將新資料插入 MySQL 資料庫並傳回成功訊息。
要在 API 中實現錯誤處理和驗證,您需要編寫可以檢測和回應錯誤並驗證使用者輸入的 PHP 程式碼。 PHP 提供了幾個可用於錯誤處理的內建函數,例如trigger_error() 或set_error_handler()。對於驗證,您可能需要使用正規表示式、PHP 篩選器或自訂驗證函數。
要部署 API,您需要將 PHP 檔案和任何其他所需檔案(例如 CSS、JavaScript 或圖片)上傳到您的 Web 伺服器。根據您的 Web 伺服器配置,您可能需要修改 .htaccess 檔案以確保 API 正確路由。
部署 API 後,您可以使用 cURL 或 Postman 等工具進行測試。這些工具可讓您向 API 發送 HTTP 請求並檢查回應資料。您可以使用這些工具來測試不同類型的請求(例如 GET、POST、PUT 或 DELETE),測試錯誤處理和驗證,並確保 API 以正確的格式(例如 JSON 或 XML)返回正確的資料).
測試 API 時,注意效能、安全性和可用性非常重要。您應該在不同的條件下(例如高流量或慢速網路連線)測試您的 API,以確保其效能良好並保持穩定。您還應該測試您的 API 是否有安全漏洞(例如 SQL 注入或跨站點腳本),並確保它易於客戶使用和理解。
以下是一個簡單的 REST API 的範例 PHP 程式碼,用於從 MySQL 資料庫檢索資料:
無論你相信與否,我們只是觸及了 DreamFactory 可以為您做的事情的表面。如果您想了解我們的SQL Server、Oracle 或MongoDB 連接器的實際運作情況,或者想了解在不編寫任何程式碼的情況下將SOAP 服務轉換為REST 是多麼容易,為什麼不與我們的工程團隊一起安排演示呢!立即造訪 https://www.dreamfactory.com/products 並安排示範!
DreamFactory 支援的其他資料庫:
如何透過 6 個簡單步驟建立 MySQL REST API 的貼文首次出現在 DreamFactory Software- 部落格上。
以上是如何透過簡單的步驟建立 MySQL REST API的詳細內容。更多資訊請關注PHP中文網其他相關文章!