简单的基于PHP的API管理平台

本教程向您展示如何使用Fusio构建干净的API,Fusio是基于PHP的开源API管理解决方案。 我们正在构建一个简单的Todo API,用户可以在其中接收和创建Todo条目。

首先,请前往Github并下载最新版本的Fusio。 然后,您需要将文件夹移动到Web服务器的文档根目录中。 要安装Fusio,您可以使用基于Web的安装程序(位于public / install.php),也可以使用CLI安装程序。 在那里,您需要输入数据库凭据进行配置并运行install命令:

  php bin / fusio安装 

要开始构建API,您必须首先定义一条路线。 路由是路径,即“ / foo / bar”或“ / foo /:year”,它将传入的请求重定向到合适的操作。 每个路由都有一个对应的YAML配置文件,该文件描述了该路由:

  版本: 1 
范围: [“ todo”]
方法:
得到:
公开:真实
描述: “返回所有待办事项”
回应:
200:待办事项集合
500:留言
动作: “ $ {dir.src} /Todo/collection.php”
开机自检:
公开:错误
描述: “创建新的待办事项”
要求:待办事项
回应:
201:消息
500:留言
动作: “ $ {dir.src} /Todo/insert.php”
  • 版本:版本描述此路由的版本。 如果API有所发展,则可以为同一路由定义多个版本。 然后,用户可以调用特定版本的端点。
  • 范围:将路由分配给已定义的范围。 范围用于使用户仅访问特定端点。 在此示例中,用户需要有权访问“待办事项”范围以发布新的待办事项条目。
  • 方法:这列出了所有可用的请求方法。 如果该方法不可用,端点将返回405方法不允许。
  • public:表示端点是公共的还是私有的。 如果端点是私有的,则用户需要提供访问令牌(也分配了合适的作用域)以访问该方法。
  • description:此方法的一般说明。 它还用在各种API规范格式中,例如OpenAPI,以更详细地描述API。
  • request:包含描述请求正文JSON格式的JSON模式的名称。 如果用户将数据发送到端点,则根据提供的模式,请求数据必须有效。
  • 响应:每个响应代码都包含一个JSON模式,该模式描述了响应主体JSON格式。 应该为每个可能的状态代码包含一个合适的模式,或者至少包含一个成功响应。
  • 动作:该动作描述了根据要求调用的脚本或网址。 该动作然后执行端点逻辑并产生拟合响应。

然后,我们需要定义一个JSON模式,该模式描述我们的Todo实体的结构。 路由定义中也引用了该模式。 我们可以使用以下JSON模式(resources / schema / todo / entity.json):

  { 
“ type”:“对象”,
“ title”:“ todo”,
“属性”:{
“ID”: {
“ type”:“整数”
},
“状态”: {
“ type”:“整数”
},
“标题”:{
“ type”:“ string”,
“ minLength”:3,
“ maxLength”:32
},
“ insertDate”:{
“ type”:“ string”,
“ format”:“日期时间”
}
},
“必填”:[“标题”]
}

为了将您的操作连接到远程服务(即数据库),您需要配置连接(resources / connections.yaml):

  MySQL-1: 
类别: Fusio \ Adapter \ Sql \ Connection \ Sql
配置:
类型: “ pdo_mysql”
主机: “ $ {env.MYSQL_1_HOST}”
用户名: “ $ {env.MYSQL_1_USER}”
密码: “ $ {env.MYSQL_1_PW}”
数据库: “ $ {env.MYSQL_1_DB}”

这种“ Mysql-1”连接使我们可以对已配置的数据库执行SQL语句。 您需要在“ .env”文件中输入合适的凭证。

然后,我们需要实现返回所有待办事项的逻辑。 为此,我们创建了一个文件(src / Todo / collection.php),其中包含以下代码:

Fusio还随附Swagger-UI应用程序,该应用程序显示自动生成的OpenAPI规范。

我希望本文能帮助您实现出色的API解决方案。 有关更多信息,请访问Fusio的网站。