gpt4 book ai didi

angularjs - 如何以 RESTful 方式在一个 API 请求中发布多个项目?

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:39 26 4
gpt4 key购买 nike

这是一个更概念性的问题,所以我认为使用的框架并不重要。我仍在使用 Node 和 Express 构建 API,并使用 Angular 构建前端。

场景:

用户将有关书籍的信息输入到单个表单中。然后将其提交到 API,并在其中对其进行验证(除了前端验证之外)并保存到数据库。

该表单包含数据库中多个模型的信息:

  • 书籍:标题、说明等。
  • 作者:许多作者有很多书
  • 出版商:一个出版商拥有多本书

如果数据库中已存在作者或发布者,则会将其链接而不是创建。

问题:

我想通过一个请求来实现这一目标。

  • 正确的做法是什么?
  • 我是否应该将表单数据发布到 /api/books 并使用 ORM 以及创建/链接作者和出版商的图书模型上的某种生命周期回调来解决后端的复杂性?
  • 我的 API 路由是否应该以任何方式反射(reflect)这一点?
  • 我是否应该创建某种反射(reflect)书籍、作者和出版商组合的虚拟模型(例如 BookCollection)?
  • 调用 GET/api/books/:id 时是否可以同时检索所有三个内容?
  • 是否有经过验证的方法来处理多个对象的验证?

感谢您的投入!任何事情都有帮助!

最佳答案

以下是我对此的看法:

  1. 使您的 API 尽可能干净。弄乱 API 会在不久的将来带来麻烦。因此,我建议将 api 设置为/api/books。
  2. 您的图书报名表包含作者和出版商字段,对吗?我想您希望有一个包含现有作者和出版商的下拉菜单/预先输入,输入书籍详细信息的用户将从中选择 1 个(或更多),对吧?在这种情况下,您的图书模型应该具有作者和出版商的 ID。这可以。本书的定义要求您拥有这些跨功能字段(但只有 Id)。因此,您应该为所有这些内容设置 3 个端点:/api/books、/api/authors 和/api/publishers。
  3. 当您在页面上显示图书详细信息(也许是显示图书)时,您必须决定是否要通过复杂的 API 在一次调用中获取作者和出版商详细信息,还是进行三次调用来获取相关数据。后一个选项更干净且更具可扩展性,我会选择它。您可以在服务器端组装所有这些数据,速度会更快,但您随后将构建庞大的不可重用的 API,这些 API 只能满足您的特定目的(稍后可能会更改)。因此,总结一下,在显示图书时,请进行 3 个 API 调用以获取图书详细信息,然后再进行两次 API 调用以根据从图书 api 收到的 ID 获取作者和出版商详细信息。
  4. 让我们考虑两种情况:第一种情况是,图书的作者/出版商位于您的数据库中。在这种情况下,用户可以从预先输入中选择它们并保存 ID。第二,当用户没有从预先输入中选择任何作者/出版商时。在这种情况下,您的模型的publisherId 和authorId 将为null。当您在/api/books 收到此请求时,您可以启 Action 者和出版商的创建,并使用他们的 ID 更新数据库中的图书对象。
  5. 请注意,这样做不会阻止您在服务器上实现验证。您仍然可以在服务器端进行验证,但这使您的客户端架构更加清晰。而且,您的 API 足够模块化,可供多个消费者使用。

关于angularjs - 如何以 RESTful 方式在一个 API 请求中发布多个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com