我何时应该为Django(或其他)使用API​​框架?

时间:2012-05-07 01:31:42

标签: django api frameworks

这是一个相当广泛的问题,但我提出这个问题是因为我认为它至少可以用(至少)例子来回答。这也是一个似乎缺乏信息的话题。当我查找有关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

1 个答案:

答案 0 :(得分:2)

如果您确实知道自己想要设计的内容,那么理想情况下应该是自我解释的问题。我并不是说以一种简单的方式,而只是说如果你的设计目标是明确的,那么你应该知道什么时候API框架是有价值的。您错误地解释了tastypie docs中的语句:“您需要一个RESTful的API并且使用HTTP。”如果你看,它是“为什么Tastypie”一节的一部分。它的含义是,如果您寻求的是一个使用HTTP的RESTful API,那么您需要tastypie。他们并没有告诉你,你确实需要这样做。只有对有这些需求的人才建议使用它。

从一般情况来看,假设您要为django项目创建API。设计API有不同的方法,但一种非常好的格式是REST。这种模式使URL在阅读,更新,创建和删除方面非常容易理解和可预测。现在假设您要使用这种流行且广为接受的REST模式创建API ...

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

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

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

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

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

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

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

除此之外,只需查看tastypie或piston的教程,看看开始导出已绑定到模型的资源是多么容易。