【问题标题】:How to define URLs only once for server and client?如何为服务器和客户端只定义一次 URL?
【发布时间】:2019-09-01 21:02:08
【问题描述】:

大家!我正在构建一个 Web 应用程序,即一个服务器-客户端应用程序。对于两者之间的交互,我必须在后端和前端定义两次 URL(硬编码字符串),这使得未来的更改变得困难,因为它需要在两个地方更改代码,而不仅仅是一个.

我正在使用DjangoAngular,因此我正在寻找一种方法来指定后端端点一次,然后理想地读取它们并将它们用于Angular 生产构建。因此,对端点的更改只需要一个新的构建,而不需要进一步的更改。

是否应该在某个.cfg 文件中定义这些并在服务器启动时由后端读取,并可能以某种方式将它们添加到Angular's build process?任何建议都会有所帮助,因为这种冗余几乎出现在每个 webapp 项目中,并且必须有更聪明的解决方案!

提前感谢您的帮助!

【问题讨论】:

标签: django angular server routes client


【解决方案1】:

在这里,拥有并定义到实体的 url 映射的是后端应用程序。多个客户端可能会使用同一个 API,例如 Web 客户端、Android 客户端和 iOS 客户端。在此设置中,您的后端是 url 映射的真实点,客户端应用程序应配置为使用后端应用程序中定义的 url 映射。

执行此操作的一种可能方法是在后端应用程序的路径上提供已定义的 url,并让您的客户端应用程序使用那里提供的数据进行自我配置。例如,如果您使用 Django Rest Framework,默认情况下,在 API 的根路径 ("/") 上,将提供资源以及资源的 url 映射。您可以使用这种机制在构建时配置您的客户端应用程序。

【讨论】:

    【解决方案2】:

    有多少端点以及您更改它们的可能性有多大?很可能您将始终需要进行更多更改,而不仅仅是在 1 个位置进行更改,因为更改端点的原因通常是您尝试 POST 或 GET 新数据结构。这意味着您无论如何都必须更改该请求流程以处理新数据类型或发布的内容。

    另外,请考虑一些公开可用的 api - 它们不会为您提供提供可用路由配置文件的端点。当他们对端点进行更改时,他们通常会创建一个版本化的 api,以便消费者可以在自己的时间进行升级。

    在我看来,除非您正在计划一个大型网络应用程序,否则我不会太担心尝试实现这样的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多