使用 Laravel 和 Doctrine 2 构建RESTful API的工具

1.0.3 2019-07-26 02:59 UTC

README

本包是 Tempest Tools 的核心。Scribe 提供了一组强大的功能,用于快速构建 RESTful API,同时不会限制开发者在其基础功能之上实现的功能。

Scribe 的一个关键见解是,RESTful API 可以定义为一系列配置,其中闭包和事件监听器提供了对基本功能的扩展。这可以节省时间,并为您的代码提供一个清晰可预测的结构。

关键特性

Scribe 的一些关键特性如下

  • 批处理和链式调用 -- 可以将多个资源和它们的关联对象图传递给 Scribe,而不是一次只处理单个资源。
  • 可过滤的索引操作 -- 索引请求可以使用从前端传递的强大过滤语言进行过滤。
  • 可扩展的配置 -- Scribe 使用响应于您 Web 应用程序路由上指定的上下文的配置。这些配置是可扩展的,并利用许多其他创新特性,以最大化控制力同时最小化工作量。
  • 可扩展的查询 -- 除了可扩展的配置之外,Scribe 还提供可扩展的查询,这样当多个查询共享共同功能时,它们可以相互扩展,以便更轻松、更快地构建/维护系统中的查询。
  • 组件间简化数据传输 -- Scribe 使用存储与请求相关的规范化信息的对象从应用程序的各个级别传递数据。这使得在任何代码位置访问所需数据变得非常简单。
  • 事件驱动设计 -- Scribe 所做的每一件事都会触发一个事件。这些事件存在于控制器、存储库和实体级别,并允许开发者轻松添加自己的自定义代码以实现新功能或以最小麻烦增强现有功能。
  • 闭包、闭包、闭包 -- Scribe 配置允许您在任何地方放置闭包,让您完全自定义控制 Scribe 在每个上下文中所做的每一件事。
  • 安全性 -- Scribe 在其配置结构中内置了强大的权限/验证系统,以使开发者能够对每个上下文中可以请求的每个操作进行细粒度控制。
  • 快速原型设计 -- 在几分钟内构建完整的工作端点,以便您的前端团队可以立即开始原型设计。
  • 深度控制您的 ORM -- 如果 Doctrine 支持,Scribe 也有配置选项来利用它。
  • 控制从您的请求返回的内容 -- 内置转换器的强大配置功能让您可以以最小的配置需求从每个请求中返回所需的数据。
  • 可移植性 -- Scribe 设计得可以轻松移植到其他框架。
  • 构建 -- Scribe 是以最佳实践为设计理念的。
  • 执行速度 -- 除了最佳实践之外,Scribe 还旨在尽可能快速地运行,并且使用它将防止许多可能导致 Web 应用程序停止的常见错误。
  • 所有事物的测试用例 -- Scribe 所做的一切都包括在测试用例中,以便于参考如何实现功能。
  • 学习和文档 -- 我们正在提供全面详细的文档,以使学习 Scribe 的所有功能变得更简单。

更多即将到来

Scribe的第一个版本的功能只是冰山一角。以下是一些即将到来的新功能的预览。

  • 与Quill集成,通过Scribe配置轻松实现缓存失效。
  • 与Raven集成,轻松配置通知。
  • 查询块。Scribe的将来版本将支持通过前端传递的标志来开关查询逻辑块。这些块可以指向存储在其他存储库类中的其他块,可能需要占位符,并且将完全受权限控制。块可以像仅仅显示返回中的新字段那样简单,也可以像您能想象的那样复杂;选择权在开发者手中。
  • 配置构建器。Scribe的将来版本将包括配置构建器类——为那些更喜欢使用构建器类而不是手动构造数组来构建配置文件的用户。
  • 在内置转换器内的事件,为修改转换器返回的数据提供另一种方式。
  • 用于数组返回的数组转换器,而不是实体返回的数组。
  • 增强控制器配置选项,使用户能够在控制器级别拥有与存储库和实体相同的内置控制水平,以执行验证和规则执行。
  • 实现HATEOAS的便利功能得到了改善。
  • Scribe配置可以指定无限数量的回退上下文。
  • 在控制器中,可以根据不同的上下文分配不同的转换器,还可以根据返回的 hydration 类型依赖。
  • 内置对Fractal转换器的支持。
  • 与Maester集成,实现全文搜索。

更多信息

请参阅维基以获取更多文档。

Tempest Tools Scribe在Tempest Tools骨架中可以见到实际效果: https://github.com/tempestwf/tempest-tools-skeleton

要求

  • PHP >= 7.1.0

  • laravel/framework = 5.3.*

  • laravel-doctrine/orm = 1.2.*

  • tempest-tools/common = 1.0.*

  • Composer.