口才:API资源与分形

时间:2019-02-18 13:49:57

标签: laravel laravel-5 thephpleague-fractal

快速提问,Eloquent:API资源和Fractal有什么区别?

在我看来,这是一样的东西吗?

2 个答案:

答案 0 :(得分:4)

两者均用于转换API json响应以标准化响应结构。

但是,Laravel内置了API资源,并且非常易于使用。当不在Laravel中构建API资源时,分形是首选的方法。分形具有一些方法,与API资源相比,它几乎没有扩展性。

但是,如果您考虑核心功能,则两者在语法语法上是相同的。

大多数分形中的事情,您现在都可以在Laravel中原生完成。加上API资源,无需进行任何额外的安装和设置。 API资源中的命名很容易以

开头

答案 1 :(得分:1)

它们都是为一项工作创建的,但是它们的解决方案在许多方面都不同。

关系:

在分形中,您可以轻松地将相关模型添加到响应中。此外,您还可以控制何时在响应中显示相关模型。 (默认包含与可用包含)

例如,您的客户可以在需要时使用?include=rate从文章中获取费率模型!考虑到这一点,当您忘记加载分形时,它会渴望加载您的关系。

在API资源中,您无法控制关系,因此您应该首先决定是否具有关系。否则,如果您忘记了急于加载数据,则将花费太多查询来加载相关模型(1 + n问题)。

序列化器

在api资源的基本用法中,您无法控制数据如何映射到最终响应。

例如,如果您希望对回复做出jsonnapi规范,则应该自己管理所有作品。但在分形中,您首先拥有它。

作为结论 我建议您在这种情况下使用分形。 (或将dingo包用于api,但要考虑dingo的复杂性!)