fusio/fusio

Fusio 项目

资助包维护!
chriskapp
Patreon
Paypal

安装次数: 9,082

依赖项: 0

建议者: 0

安全性: 0

星标: 1,837

关注者: 58

分支: 219

开放问题: 160

类型:项目


README

关于

Fusio 是一个开源的 API 管理平台,帮助创建创新的 API 解决方案。

使用案例

  • API 产品
    Fusio 帮助您创建优秀的 API 产品,除了构建 API,它还提供了一个开发者门户,开发者可以在此注册,并提供了货币化您的 API 的方式。
  • API 网关
    Fusio 可以用作您的内部 API 和微服务的网关。它处理所有常见的功能,如授权、速率限制和模式验证。
  • SPA 后端
    Fusio 可以用作构建使用流行的 JavaScript 框架(如 Angular、React 或 Vue)的 SPAs 的后端。它提供了一个强大的代码生成器,可以自动为您的 API 生成 SDK。
  • 低代码平台
    Fusio 允许您在不具备编码知识的情况下构建 API 端点。例如,它提供了一个实体生成器,您可以使用它轻松创建完整的 CRUD API。
  • API 框架
    对于更复杂的用例,您还可以使用 Fusio 作为框架从头开始构建完整的 API。这意味着您将构建自定义操作,在其中您可以使用广泛的 PHP 生态系统来解决您的任务。

功能

Fusio 帮助您构建 API,提供开箱即用的企业级功能,以便您可以专注于您的业务案例。请查看我们的文档网站获取更多信息。以下功能列表为您提供了初步概述

  • OpenAPI 生成
    Fusio 会自动为定义的路由生成 OpenAPI 规范
  • SDK 生成
    Fusio 可以根据定义的模式自动生成 API 的客户端 SDK
  • Webhook 支持
    Fusio 包含一个 webhook 系统,有助于构建 API 的发布/订阅
  • 速率限制
    Fusio 提供了一种根据用户或应用进行请求速率限制的方法
  • 授权
    Fusio 使用 OAuth2 进行 API 授权
  • 货币化
    Fusio 提供了一个简单的支付系统,可以对特定路由进行收费
  • 验证
    Fusio 使用 TypeSchema 自动验证传入的请求数据
  • 分析
    Fusio 监控所有 API 活动,并在仪表板上显示它们
  • 用户管理
    Fusio 提供了一个开发者应用程序,新用户可以通过 GitHub、Google、Facebook 或通过常规电子邮件注册登录或注册新帐户

应用程序

Fusio 提供了许多应用程序,有助于与 API 一起工作。大多数应用程序都是简单的 JS 应用程序,它们与 Fusio 的内部 API 一起工作。您可以在我们的市场中查看所有可用的应用程序列表。您可以通过 CLI 命令(例如 php bin/fusio marketplace:install fusio)或通过后端应用程序安装此类应用程序。

所有应用程序都安装在apps/文件夹中。您需要通过在.env文件中定义APP_APPS_URL变量来告诉Fusio应用程序文件夹的公共URL。根据您的配置,这可以是自定义子域,例如https://apps.acme.com,或者简单地是子文件夹https://acme.com/apps

后端

Backend

后端应用程序是配置和管理您的API的主要应用程序。安装程序会自动安装此应用程序。应用程序位于/apps/fusio/

VSCode

Fusio提供了一个VSCode扩展,可用于简化动作开发。这意味着您可以直接在VSCode编辑器中开发每个动作。

SDK

为了构建和集成Fusio应用程序,我们提供了几个SDK,您可以使用它们与Fusio实例交互,或者也可以简单地手动与REST API通信。

框架

REST API

生态系统

Fusio是一个开源项目,您可以在Apache 2.0许可证的条款下免费用于私人项目和商业项目。除了我们的核心产品外,我们还提供其他服务来增强Fusio的功能。

  • SDKgen
    SDKgen是一个强大的代码生成器,可以自动为您的REST API构建客户端SDK。
  • APIgen
    根据您的数据模型生成完整且可定制的API。
  • APImon
    APImon提供了一个直观的服务来监控和分析API端点。
  • TypeSchema
    一种JSON格式,用于以语言无关的格式描述数据模型。
  • TypeAPI
    一个OpenAPI替代品,用于描述REST API以进行类型安全代码生成。
  • TypeHub
    一个协作平台,用于设计和构建API模型和客户端SDK。
  • PSX
    一个专注于构建完全类型化REST API的创新PHP框架。

安装

您可以通过composer或手动文件下载来安装Fusio。

Composer

composer create-project fusio/fusio

下载

https://github.com/apioo/fusio/releases

配置

您可以使用以下步骤手动安装Fusio,或者您也可以使用位于public/install.php的基于浏览器的安装程序。请注意,出于安全原因,强烈建议在安装后删除安装脚本。

  • 调整配置文件
    在Fusio目录中打开文件.env,将APP_URL更改为指向公共文件夹的域名。还将数据库凭据插入到APP_CONNECTION密钥中。可选地调整APP_APPS_URL为应用程序文件夹的公共URL(如果您想使用应用程序)。
  • 执行安装命令
    安装脚本将Fusio数据库模式插入到提供的数据库中。可以使用以下命令执行:php bin/fusio migrate
  • 创建管理员用户
    安装完成后,您必须创建一个新的管理员账户。为此,您可以使用以下命令:php bin/fusio adduser。选择账户类型为“管理员”。
  • 安装后端应用程序
    要通过管理面板管理您的API,您需要安装后端应用程序。可以使用以下命令安装应用程序:php bin/fusio marketplace:install fusio

您可以通过浏览器访问APP_URL来验证安装。您应该看到一个API响应,表示安装成功。

如果您想将Fusio安装在特定的数据库上,您需要调整APP_CONNECTION参数。您可以使用以下连接字符串:

  • MySQL: pdo-mysql://root:test1234@localhost/fusio
  • PostgreSQL: pdo-pgsql://postgres:postgres@localhost/fusio
  • SQLite: pdo-sqlite:///fusio.sqlite

通常情况下,可以在我们数据库抽象层支持的任何数据库上安装Fusio,但我们的内部测试案例仅覆盖MySQL、PostgreSQL和SQLite,因此不能保证所有功能都能正常工作。

Docker

可以通过Docker设置Fusio。这样做的好处是您可以自动获得一个完整的运行中的Fusio系统,无需配置。这对于测试和评估特别有用。要设置容器,您需要检查仓库并运行以下命令

docker-compose up -d

这将在预定义的后端账户下构建Fusio系统。凭证从docker-compose.yml中的环境变量FUSIO_BACKEND_USERFUSIO_BACKEND_EMAILFUSIO_BACKEND_PW中获取。如果您打算将容器部署到互联网上,您必须更改这些凭证。

域名

默认情况下,整个Fusio项目可以托管在单个域名上。在这个配置中,您的API在根目录下提供服务,开发人员门户和后端应用程序直接从/apps文件夹提供服务。这种设置易于使用,因为它不需要配置。如果您想在生产环境中运行Fusio,我们建议创建以下子域结构

  • api.acme.com
    仅包含Fusio,您的API在这里提供服务,在这种情况下,您可以删除public/文件夹中的apps/文件夹
  • developer.acme.com
    包含开发人员门户应用程序,外部开发人员可以在此注册
  • fusio.acme.com
    可选的后端应用程序,您可以在此管理您的Fusio实例。您也可以将其托管在完全独立的内部域名上,后端应用程序只需要访问Fusio API。

这当然只是一个建议,您可以根据自己的喜好选择域名。

文档

请查看我们的官方文档网站,我们在这里整合了所有文档资源:https://docs.fusio-project.org/

支持

推广

如果您是博主或杂志,我们很高兴您愿意介绍Fusio。请查看关于页面的媒体部分以下载官方图标集。如果您有任何问题,请直接给我们留言,我们可以帮助您创建优质内容。

咨询

如果您是公司或自由职业者,并想了解如何使用Fusio的详细信息,您可以联系我们进行咨询。在研讨会中,我们试图找到最佳方法来使用/集成Fusio,同时我们也会解释其功能并回答您的问题。

捐赠

如果这个项目帮助您产生了收入,或者总的来说,如果您想支持该项目,请查看我们仓库中的捐赠选项。

合作伙伴

以下列表显示了Fusio项目的所有合作伙伴。我们感谢每一位支持我们实现将API开发提升到下一个层次的合作伙伴。如果您有兴趣在这里列出,请赞助我们的项目。