我的 REST API 应该创建一个独立的应用程序还是将其放置在我的工作应用程序中?

12

我正在使用Geodjango构建简单的GIS系统。

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

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

那么什么被认为更好呢?

2个回答

13
尽管可以为任何一种方法进行辩论,但我认为将API保留在其相关应用程序中会更好。由于API中的代码将依赖于模型或其他实用程序方法,因此将API保留在同一应用程序中将导致更具内聚性的代码。此外,Django应用背后的思想是它们可以被隔离和重用。
以前存储模板时存在一个类似的情况。在Django的最初几天,人们通常喜欢将所有模板存储在同一个全局文件夹中(带有按应用程序名称命名的子目录)。然而,近年来甚至Django也开始不赞成这种做法,而倾向于将模板存储在各自的应用程序中。

4

@hspandher的回答很好,可以实现你大部分的需求。

然而,还有一种方法可能更复杂,但能为您提供实验和可重用性潜力:

分离一切:

  1. 后端:

    将API与其可视化(请参见下面的前端)隔离开来,并使其完全自主和自包含。
    这可以通过在Django项目中分离应用并公开相应的API来实现,这些API必须是外部因素(例如客户端、另一个应用程序等)与您的任何应用程序“交谈”的唯一方式。

  2. 前端:

    假设您已经公开了API,您有效地将可视化与逻辑分离,因此您有多种选项来可视化您的地图。 例如,您现在可以构建一个React应用程序,该应用程序可以向您的API发出请求,并通过使用以下任何工具之一来可视化响应:leaflet.jsD3.js或任何您喜欢的工具。

总结:

这种分离的好处是:

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

顺便提一下,您可以阅读有关12因素方法,并考虑在实施中使用它。


我正在使用OpenStreetMap渲染geojson,使用leaflet.js或D3.js更适合? - adnanmuttaleb
@adnanmuttaleb 这更多是个人喜好的问题,但我更喜欢leaflet.js。 - John Moutafis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接