【问题标题】:Is it OK for an API endpoint to return multiple models (e.g when configuring create/update forms in the front end)?API 端点是否可以返回多个模型(例如,在前端配置创建/更新表单时)?
【发布时间】:2021-08-19 14:30:42
【问题描述】:

我正在从普通的 CRUD 资源方法(通常返回填充表单所需的多个模型)切换到 API 方案。我的问题是,我使用的正常创建方法是否应该被制成一个返回多个模型的 API 端点,或者每个需要来自数据库的数据的表单元素是否应该有它自己的端点并且应该发出多个 HTTP 请求?

这是我第一次尝试通过 API 将前端和后端解耦,我能找到的所有教程和示例都非常基础,以至于无法说明这一点。我知道我将如何实现这两种方法,但不知道推荐的方法。我正在寻找一些关于什么可能被认为是这种情况下的最佳实践的想法,以及一种或另一种方法可能给我带来的任何潜在问题。

【问题讨论】:

    标签: laravel-8 laravel-api laravel-vue


    【解决方案1】:

    由于您的目标是去耦,我建议考虑创建数据传输对象 DTO)Pros and Cons of DTO

    特别是针对您的问题,创建一个封装前端所需模型的 DTO 对象。

    【讨论】:

    • 感谢您的文章。我花时间阅读它。我不确定我是否确信我有一个真正需要 DTO 的用例。似乎这种模式最适合存在包含来自各种模型的大量数据集合的“虚拟对象”。我更多地指的是用例,我有一个表单,我需要用来自多个引用实体的数据填充,例如国家、货币、电话代码等。感谢您抽出时间回答,如果您认为请纠正我我错了。
    • 我们在公司使用它的方式(我从链接的文章中得到)可以总结为:“DTO 只不过是一个暴露属性但没有方法的容器类。A每当您需要在临时结构中对值进行分组以传递数据时,DTO 都会很有帮助。”和“一层 DTO 将域模型与表示隔离开来,从而实现松散耦合和优化的数据传输。”
    • 我同意你的观点。 DTO 可能很适合这个用例。我想我会对此进行一些研究和测试。不确定我是否会按照我所询问的方式使用,但我在标准 Laravel 应用程序中还有其他地方,我认为 DTO 适合创建比我通常实现的更松散的耦合。再次感谢您的回复,它很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2019-09-19
    • 2018-10-21
    相关资源
    最近更新 更多