如何将路由端点重构为 ORM 结构?

Posted

技术标签:

【中文标题】如何将路由端点重构为 ORM 结构?【英文标题】:How to refactor route endpoints into ORM structure? 【发布时间】:2020-12-22 01:45:55 【问题描述】:

我什至不确定到底是什么构成了端点以及如何将其转换为 ORM。我是 Angular 的新手,但据我了解,端点是当您从服务器获取数据时,无论是在线 API 还是使用 SQL 的数据库查询。 从我的研究来看,ORM 基本上使代码更高级,并且摆脱了对 SQL 的需求,但是你是怎么做到的呢?如果没有 SQL,它是使用 URL 对在线 API 的请求怎么办?

为了澄清,我正在开发一个使用 Angular 的网站。有一个数据库、一个 API 和一个 UI,API 从在线 API 和数据库中提取数据。所以我的问题是关于如何重构这两种类型的端点。

【问题讨论】:

【参考方案1】:

ORM 是一种处理对象的方法,让框架负责将对象转换为 DB 所需的方式或从 DB 到对象的数据。 UI 与它无关。这只是后端的数据层或数据层的问题。也许我们可以继续说,即使是控制器部分或后端的其他部分也不需要了解 ORM。

所以你的抽象是

    无论您在 Model 类方面谈论的 DB 类型如何 无论数据来自DB还是后端其他在线API调用,最终也是一个模型对象,可以发送到UI

UI 层不需要也不应该知道您的后端如何获取 UI 所需的详细信息。所以结构应该更多地基于常识、领域、您的需求等,而不是后端如何获取数据。

这同样适用于 API 端点。以有意义的方式为您的应用程序创建它们。示例:

// this might be some of the endpoints required for a e commerce site

/product/recommendations      // returns recommended products for a user
/product/categories           // returns categories of products
/user/getCartItems            // returns cart items of user
/orders/cancel                // cancel a order

查看 api 端点如何完全不知道后端如何处理/检索数据

【讨论】:

以上是关于如何将路由端点重构为 ORM 结构?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用Eloquent ORM时构建Laravel应用程序

django model 高级进阶

DTO 应该代表嵌套实体结构,还是应该将我的路径设置为每个嵌套对象都有一个端点?

luffy项目之重构项目目录结构及初始化事项

eclipse如何进行工程重构

DAO、ORM 和查询