繁体   English   中英

关于FE和BE之间的api设计问题

[英]A question about api design between FE and BE

我正在构建一个 FE-BE 应用程序,我提出了一些关于它们之间的 api 设计的问题。

假设我正在开发一个有 2 个屏幕的库应用程序:

  1. 添加书籍{作者:字符串,名称:字符串}
  2. 图书馆藏书量+全市所有图书馆每本藏书数量

该会:

  1. 将新书存储在数据库中
  2. 向 FE 发送书籍/书籍清单
  3. 调用第 3 方 api 以获取该市所有图书馆中一本书的副本总和

所以我的两个问题是:

一个。 当 FE 从 BE (GET) 获取书籍时,每本书都有 id(存储在 DB 中时获得的 id),但是当 FE 创建一本新书并将其传递给 BE(POST)时,它没有有任何身份证。 那么我应该在 POST 请求中传递新书时将 null 放在 id 中,还是应该创建 2 个 object 类型(BookWithId 和 BookWithoutId)?

湾。 BE通过第3方api接收到的一本书(在所有城市图书馆中)的副本数应该是Book object中的一个字段,因此可以在GET请求中与该书一起传递给FE ,或者 FE 是否应该通过单独的 api 向 BE 请求它?

A. 使用 DTO(Data Transfer Object)将数据发送到 BE,并使用 Model class 将其持久化到 DB 中。 使用映射器方法将 map 的 DTO 值转换为 model class,反之亦然。 所以不需要在 DTO 中有 ID 值。

B. 从数据库中获取书籍对象(使用 model 类),map 到 DTO,从第 3 方获取总数 API 并将值设置为 DTO。

我认为您应该使用两个单独的 DTO,一个用于 FE->BE 通信(createBookDTO),一个用于相反的(queryBookDTO)。 您可以将 id 属性放在 queryBookDto object 但不能放在创建中。

关于第二个问题,你必须考虑关注点分离。 FE 不需要知道副本的数量是来自单独服务的信息,因此将其清理干净并添加逻辑以将该信息获取到 BE 端。 FE 可以使用单一服务获取有关一本书的所有信息,而不管数据的来源如何。

如果您将这些信息直接保存在您的数据库中,您将只能在他的 BE 方面更新您的项目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM