【问题标题】:When should I be using an API framework for Django (or other)?我什么时候应该为 Django(或其他)使用 API 框架?
【发布时间】:2012-05-15 14:02:55
【问题描述】:

这是一个相当广泛的问题,但我提出这个问题是因为我相信它可以通过(至少)示例来回答。这也是一个似乎缺乏信息的话题。当我查找有关 Django 的 API 框架(例如 Tastypie 或其他)的信息时,我找不到关于我应该使用它的为什么的信息。它们只是说明了它们相对于其他 API 框架的优势。

Tastypie 的 github 的自述文件指出:

You need an API that is RESTful and uses HTTP well.

我会吗?有人可以说服我吗?同样,我为什么要使用 API 框架?我应该设计我的 Web 应用程序以使用上述框架吗?它们有哪些用例?

请耐心等待问题的范围。我已经阅读了大量有关 REST 本身的内容,但同样,在设计 Web 应用程序以使用 RESTful API 或完全使用 API 时,我几乎找不到正确的做法。

谢谢,

ParagonRG

【问题讨论】:

    标签: django api frameworks


    【解决方案1】:

    如果您确实首先知道要设计什么,那么理想情况下,这种问题应该是不言自明的。我的意思不是简明扼要,而是说如果你的设计目标很明确,那么你应该知道 API 框架何时有价值。您误解了来自 sweetpie 文档的声明:“您需要一个 RESTful 并且很好地使用 HTTP 的 API。”。如果您看到,它是名为“Why Tastypie”的部分的一部分。它的意思是,如果您寻求的是一个很好地使用 HTTP 的 RESTful API,那么您需要美味派。他们并没有告诉你你确实需要这个。只是它是向有这些需求的人推荐的解决方案。

    从一般的角度来看,假设您想为您的 django 项目创建一个 API。有不同的方式来设计你的 API,但是一个非常被接受的格式是 REST。这种模式使 URL 在读取、更新、创建和删除方面非常易于理解和预测。现在让我们假设您想使用这种流行且广为接受的 REST 模式来创建您的 API...

    在创建 API 时,有一些非常常见的功能,几乎是样板。您必须在 django 项目中查询模型并返回完整或子集的字段,甚至是该数据的自定义格式。这就是我们开始了解 API 框架的好处的地方...

    让我向您提出这个问题...如果存在的框架具有一组强大的功能,涵盖 API 的最常见需求,您愿意从头开始编写所有代码吗?这与您选择使用 django 而不是编写自己的网站的原因几乎相同。

    django 有两个非常流行的 API 框架:tastypie & piston
    它们都提供了相似的功能,可以让您快速启动和运行。您可以创建一个映射到模型的处理程序类,默认情况下,您可以通过多种格式(json、yaml 等)对它进行完全 CRUD 访问。这两个框架都假设您通常希望在 django 模型周围绑定一个处理程序,尽管您不限于此。

    身份验证:框架为您处理它几乎就像创建您要使用的类型的实例并将其分配给处理程序一样容易。

    格式:(前面提到过)你的api可以自动处理json、yaml、xml等多种数据格式。

    底线是框架可以消除不断重复此功能的繁琐任务。所有的辛苦工作都完成了。您只需要编写特定的处理函数并将它们映射到 url。准备好了。

    如果您只需要一些简单的处理程序,显然您可以编写一些视图并手动处理您的请求对象和返回值。但是,当您想要创建更强大的 API 时,请节省您的时间并使用为您奠定基础的东西。

    除此之外,只需查看美味派或活塞的教程,即可了解开始导出已绑定到模型的资源是多么容易。

    【讨论】:

    • 感谢您的冗长回复。在某种程度上,我认为我很难提出正确的问题。我真的很喜欢以下内容:Web API 有哪些用例?我应该什么时候设计我的网络应用程序来使用它们?在网上很难找到此类一般性问题的答案。特定于框架的问题实际上是次要的。由于对要问的问题缺乏了解,因此它成为了主要问题。也许我只需要就这个话题进行一次对话。
    • @Paragon:如果你想让它成为一个更普遍的问题,它的答案会更短。如果框架或应用程序已经具有节省您时间的基本功能,请使用它。它与任何库或模块没有什么不同。人们编写库是为了省去你每次都重新发明轮子的麻烦。如果您询问何时为自己的应用创建 Web api……如果您想公开 3rd 方访问权限,或者甚至为移动组件创建私有 api。
    • 是的,我现在明白了。再次感谢您的长时间回复。我上床想了想,在某些方面这个问题是多么愚蠢,然后想通了。它还通过阅读 Tastypie 教程来了解它的实际作用。谢谢!
    猜你喜欢
    • 2011-08-01
    • 2010-10-26
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2011-09-03
    • 2014-12-19
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多