Django和Restful API

时间:2009-03-18 04:35:14

标签: django api rest

我一直在努力选择使用Django创建RESTful API的方法。我尝试过的方法似乎都不是“银色”子弹。来自http://fi.am的WAPI可能是我想要完成的最接近的,但是我不确定在真正的RESTful API中是否可以接受资源标识符的参数在查询字符串中而不是在“干净”中“网址格式。有关修改WAPI RestBinding.PATTERN以“清理”URL的任何建议吗?我探索过的另一个选择是Django-Rest-Interface。但是,这个框架似乎违反了我需要的最重要的部分之一,那就是包含引用其他资源的完整资源URL(参见http://jacobian.org/writing/rest-worst-practices/链接的不当使用)。最后的选择是使用django-multiresponse,基本上可以做到很长的路。

请向我提供最好的建议,特别是那些已经处理过这个决定的人。

8 个答案:

答案 0 :(得分:41)

对于Django来说,除了tastypie和活塞之外,django-rest-framework还是值得一提的。我已经顺利地迁移了我的一个项目。

  

Django REST框架是Django的轻量级REST框架   旨在使构建连接良好,自我描述的RESTful变得容易   Web API。

快速举例:

from django.conf.urls.defaults import patterns, url
from djangorestframework.resources import ModelResource
from djangorestframework.views import ListOrCreateModelView, InstanceModelView
from myapp.models import MyModel

class MyResource(ModelResource):
    model = MyModel

urlpatterns = patterns('',
    url(r'^$', ListOrCreateModelView.as_view(resource=MyResource)),
    url(r'^(?P<pk>[^/]+)/$', InstanceModelView.as_view(resource=MyResource)),
)

以官方网站为例,以上所有代码均提供api,自解释文档(如基于soap的webservice),甚至是沙箱进行测试。非常方便。

链接: http://django-rest-framework.org/

答案 1 :(得分:18)

我相信最近发布的django-piston现在是在Django中创建合适REST接口的最佳解决方案。 django-piston

注意 :似乎不再维护django-piston(请参阅下面的评论)

答案 2 :(得分:9)

django-tastypie是一个很好的方法,他们的口号是:“自2010年以来为Django应用程序创建美味的API”非常令人欣慰;)

答案 3 :(得分:5)

您可以查看django-dynamicresponse,这是一个轻量级框架,用于向您的Django应用程序添加带有JSON的REST API。

它只需要很少的更改就可以为现有的Django应用程序添加API支持,并且可以直接从新项目开始构建API。

基本上,它包括用于将JSON解析为request.POST的中间件支持,以及将返回的上下文序列化为JSON或根据请求类型有条件地呈现模板/重定向。

这种方法与其他框架(例如django-piston)的不同之处在于,您不需要为API请求创建单独的处理程序。您还可以重用现有的视图逻辑,并像普通视图一样继续使用表单验证等。

答案 4 :(得分:4)

我不知道这个项目是否对您有用,但发送链接几乎不会受到伤害。看看http://opensource.washingtontimes.com/projects/django-apibuilder/提供的django-apibuilder。也许它有用吗?

/的Jesper

答案 5 :(得分:0)

看看这个RestifyDjango

有些相关的是Django XML-RPCJSON-RPC

答案 6 :(得分:0)

https://github.com/RueLaLa/savory-pie

Savory Pie是一个支持django的REST框架。

答案 7 :(得分:0)

我建议你研究一下Django Rest Framework(DRF),玩这个并看看它是否符合你的要求。我推荐DRF的原因是因为它通过使用GenericAPIView类,Mixin Classes和Mixed in Generic视图使得API视图变得非常简单。您可以轻松地使用久经考验的设计模式来制作API端点,同时保持代码库的整洁和简洁。编写代码总是很棒时,你也会干。您的API视图长度为2-3行。

您可以查看本教程http://programmathics.com/programming/python/django-rest-framework-setup/,该教程从设置环境开始,通过使用django rest框架制作RESTful API的不同方法。

免责声明:我是该网站的创建者。