【发布时间】:2015-12-15 23:00:13
【问题描述】:
我今天正在研究Fractal(tldr:数据对象/集合到 json 格式库),并看到了使用它的一些好处。然而,它的功能似乎跨越了我正在开发的应用程序的多个层。因此出现了一个问题——使用分形的代码属于哪里?模型、服务、控制器,还是其他地方?项目文档中的文档中给出的示例似乎更倾向于将其放在控制器中或路由回调中(更复杂的示例似乎来自 Laravel 应用程序,作者在他的 API 书中提到了它)。
我关心的是耦合——如果我把它放在控制器中,正如大多数使用示例所显示的那样,那么我将来几乎会受到它的约束。我的第一个直觉是将它抽象一点,将抽象绑定到合同上,然后使用它。可能听起来过度设计,但我正在开发的 API“渴望”符合JSON-API,因此将这样的“json 格式化程序”换成其他东西听起来不那么疯狂。此外,我仍然需要格式化错误消息,而 Fractal 似乎根本无法触及它。
我想利用对 Eloquent 分页器和嵌入式资源的支持,因为这总是很痛苦。只有这样做才会在表示/控制层变得尴尬(至少可以说)。即使在 Fractal 文档中,他们也会向控制器类添加一些额外的方法来准备 Fractal 对象。这对我来说似乎有点奇怪,但也许这只是我。这就是为什么把它带到这里。
我知道这可能是一个偏好问题,但我指望有人有一个合理的声音:)。或者也许是一个更好的解决方案,请记住自动化和json-api 合规性是关键原因。
【问题讨论】:
标签: api architecture laravel-5.1