向前端提供数据的方法

问题描述 投票:0回答:1

随着我在该网站的后端开发方面取得进展(使用 django 和 DRF,但我认为这在这个问题中并不重要),我遇到了一个有关 API 端点组织的问题,特别是在为以下对象提供数据方面:前端。我的目标是确保后端实现既符合标准又针对性能进行了优化。

例如,让我们考虑一下网站主页的结构。前端将显示各种组件,例如横幅、最受欢迎的服务、最新产品以及潜在的其他不相关数据*不相关,因为它们是数据库中的单独实体。虽然我有单独的产品和服务端点......,但我不确定这种方法是否适合主页。

我主要关心的是是否最好为产品和服务维护单独的端点,这可能需要前端发出多个请求来收集主页的所有必要数据。或者,我是否应该考虑将主页所需的数据合并到单个端点中以简化前端数据检索?

我正在寻求有关在此场景中构建 API 端点的最佳实践的建议。是否有既定的惯例或指南来以平衡性能优化和前端开发效率的方式组织端点?

此外,我有兴趣了解更多有关粒度端点和聚合端点等概念的信息,以及如何在这种情况下应用它们。任何有关此主题的见解、建议或推荐资源将不胜感激。

感谢您的协助!

django api rest django-rest-framework
1个回答
0
投票

在设计 REST API 时,最好按资源分隔端点,因此,如果您的主页中有产品、服务和推荐,出于多种原因最好有 3 个独立的端点

  1. 通过为每个资源(例如产品)提供专用端点,更新变得更加简单。您确切地知道去哪里修改或检索特定数据,而无需搜索多个位置。这降低了忽视或破坏相关功能的风险。
  2. 如果您后来想要添加一个端点来在其他地方显示服务,您可以为不利于您的家庭端点的服务实现一个额外的端点,或者您可以再次使用主页来获取所有其他数据
  3. 即使您是处理前端和后端的全栈开发人员,确保 API 的易用性和理解性也非常重要。因为随着时间的推移,很容易忘记实现细节。拥有组织良好的端点可以更轻松地记住和使用 API,而无需在前端开发期间不断寻找后端 URL。因此,如果您想要产品,您会知道寻找 /api/products 等

请注意,由于并行性,拥有一个端点根本不会提高性能,因为您的前端将并行发送 3 个请求,而不是等待其中任何一个请求完成后再发送另一个请求,因此您不必等待其中一个请求然而,他们在发送另一个之前先返回

现在据说它在性能方面仍然可能会更好一些,因为它会减少服务器上的网络开销,因为它收到一个请求而不是 3 个请求,如果您足够漂亮,您可能会为您的主页设置一个聚合端点确保主页中的任何内容都没有在其他地方使用,并且主页以后不会更改为使用来自其他端点的内容。如果你要实现它,最好使用类似于服务层的东西,在 service.py 文件中有一个名为 get_products() 的方法,在你的产品视图中你只需调用这个方法 现在在你的主视图中,你只需调用这 3 个方法 所以现在您正在重用代码,并且您仍然拥有 3 个主要端点供以后重用,并且您的主页仅调用一个端点,该端点调用后端中的 3 个方法

© www.soinside.com 2019 - 2024. All rights reserved.