为我的 REST API 创建一个单独的应用程序或将它放在我的工作应用程序中?

Create a separate app for my REST API or place it inside my working app?

我正在 geodjango 上构建简单的 gis 系统。

该应用程序显示了一组地图,我也在尝试为这些地图提供 RESTFUL API。

我要决定是为 API 创建一个单独的应用程序还是在我现有的应用程序中工作。
这两个应用程序在逻辑上是独立的,但它们共享相同的模型。

那么什么被认为更好?

尽管可以为这两种方法中的任何一种提供案例,但我认为将 API 保留在其关联的应用程序中会更好。由于 API 中的代码将依赖于模型或其他实用方法,因此将 API 保留在同一个应用程序中会导致代码更具凝聚力。除了 Django 应用程序背后的意识形态之外,它们可以被隔离和重用。

曾经有过类似的存储模板的情况。在 Django 的最初几天,人们习惯于将所有模板一起存储在同一个全局文件夹中(子目录由应用程序名称组成),但是,最近甚至 Django 也开始反对这种方法,转而支持将模板存储在相应的应用程序本身中。

@hspandher 的回答非常可靠,可以满足您的大部分需求。

虽然还有另一种方法,实现起来可能有点复杂,但为您提供了所有 space 您可能需要的实验和可重用性潜力:

把所有东西分开:

  1. 后端:

    将您的 API 与其可视化(参见下面的前端)隔离开来,使其完全自主和独立。
    这可以通过在 Django 项目中分离你的应用程序并公开相应的 APIs 来实现,这必须是外部因素(例如客户端,另一个应用程序等)到 "talk" 的唯一途径您的其中一款应用。

  2. 前端:

    假设您公开了 API,您就有效地将可视化与逻辑分开了,因此对于如何可视化您的地图,您有很多选择。 例如,您现在可以构建一个 React 应用程序,它可以向您的 API 发出请求并使用以下任何工具可视化响应:leaflet.js, D3.js,或您真正喜欢的任何工具。

总结:

这种分离的好处是:

  • 逻辑与实现分离。
  • 更好的可维护性。
  • 许多工具和技术选项可供使用。
  • 可重用性。

作为旁注,您可以阅读 12 factor 方法并考虑在您的实施中使用它。