2

我正在编写 Django 应用程序(社交网络)并考虑将单体项目分为两个项目:UI 和 API。例如,Django 将仅用于呈现页面、与 API 交互和获取数据,这些 API 编写在 web.py 上。

优点如下:

  1. 我可以独立开发和测试API。
  2. 将来,可能会出现其他 UI(例如移动),这将需要服务。
  3. 我打算外包 Web UI 开发,所以,如果我的应用程序有两个模块,我可以只在外部提供一个 UI,不共享应用程序的逻辑。

缺点如下:

  1. 我一个人工作,开发两个项目更难,然后是一个。
  2. 我将无法使用酷炫的 Django 管理面板。我需要自己写。
  3. 与 Django 相比,web.py 更底层。

这就像一个大脑转储,但如果您分享您使用 UI 模块和独立 API 模块创建 Web 应用程序的经验,我将不胜感激。

更新(更具体的问题,如迈克所问)

你将使用什么 Python 框架来创建社交网络的 REST API,它可以被不同的客户端应用程序使用?使用仅返回 JSON 并由 Django for web 呈现它的 web.py 是个好主意吗?

谢谢,鲍里斯。

4

1 回答 1

1

我遇到过和你类似的情况。我最终在 Django 中编写了 UI 和 API 部分。目前,我在同一个流程/项目中为他们提供服务。你提到你希望能够外包 UI 开发,但请听我说。

同时,我已经使用 django-piston 实现了 RESTful 前端,但做了一些准备工作:

  1. 将所有 DB 和 ORM 访问封装到一个库中。您可以为整个项目执行此操作,也可以逐个应用执行此操作。该库不仅是您的数据库访问的低级包装器,而且还可以用于更高级别的“问题”,例如“all_comments_posted_by_friends()”或其他东西。这完成了两件事:
    1. 您可以从 UI 视图和 API 视图调用您的预设查询,而无需在多个位置重新实现它们。
    2. 如果您想使用 NoSQL 数据库,例如,使用其他一些分布式存储模型,您稍后将能够替换一些(如果不是全部)底层数据库逻辑。您可以提前设置您的整个应用程序,而不必在一开始就担心这个复杂的细节。
  2. API 的身份验证层能够接受基于 HMAC/令牌的标头以进行编程访问和正常的 Django 身份验证。我以这样一种方式设置视图,即它们将为程序化客户端呈现纯 JSON(基于内容类型),如果人类从浏览器浏览,它们将呈现 HTML 中的数据结构(带有可点击的链接和可点击的文档字符串) . 这使得 API 可以被人类完全探索和点击,而无需阅读任何文档,同时客户端可以通过 JSON 轻松处理它。

实际上,我构建的数据库层用作内部 API。如果您愿意,可以从多个应用程序、多个进程中使用相同的数据库层。UI 视图和 REST 视图都在 Django 中实现。它们可以在同一个进程中,也可以在不同的进程中(只要它们现在可以访问同一个数据库)。

于 2012-08-17T18:03:12.153 回答