根据 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中文网其他相关文章!