快速提问,Eloquent: API Resources 和 Fractal 有什么区别?
对我来说,这看起来是一样的吗?
快速提问,Eloquent: API Resources 和 Fractal 有什么区别?
对我来说,这看起来是一样的吗?
两者都用于转换 API json 响应以标准化响应结构。
但是,API 资源是内置在 Laravel 中的,并且非常易于使用。当 API 资源没有在 Laravel 中内置时,分形是首选的方式。与 API 资源相比,Fractal 有一些方法使其不太广泛。
但是如果你考虑核心功能,两者都是相同的,只是语法糖不同。
大多数分形的事情,现在你可以在 Laravel 本地完成。加上 API 资源,无需任何额外的安装和设置。API 资源中的命名法很容易上手
它们都是为一项工作而创建的,但它们的解决方案在很多方面都不同。
关系:
在分形中,您可以轻松地将相关模型添加到响应中。此外,您可以控制何时应在响应中显示相关模型。(默认包含 vs 可用包含)
例如,您的客户可以?include=rate
在需要时使用从文章中获取费率模型!考虑到这一点,当您忘记加载分形时,分形会急切地加载您的关系。
在 API 资源中,您无法控制关系,您应该首先决定是否建立关系。否则,如果您忘记为它预先加载数据,加载相关模型将花费您太多查询(1+n 问题)。
串行器
在 api 资源的基本使用中,您无法控制数据如何映射到最终响应。
例如,如果您想要响应的jsonnapi规范,您应该自己管理所有工作。但在分形中,你首先拥有它。
作为结论, 我建议您在这种情况下使用分形。(或为 api 使用 dingo 包,但要考虑dingo的复杂性!!)