当前位置:  开发笔记 > 后端 > 正文

Django和Restful API

如何解决《Django和RestfulAPI》经验,为你挑选了4个好方法。

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

请给我你最好的建议,特别是那些已经处理过这个决定的人.



1> Sun Liwen..:

对于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[^/]+)/$', InstanceModelView.as_view(resource=MyResource)),
)

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

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



2> gsiegman..:

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

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


我强烈建议避免使用django-piston.我一直在使用它,因为它被放弃了,可以让生活变得非常痛苦,特别是如果你需要开始做任何与标准化程序非标准的远程操作.
django-tastypie现在是我首选的REST解决方案.
最好更新这个答案,注意**活塞不再维护,此时可能不应该用于新的构建**.Tastypie和Django REST框架是最成熟,功能最全的框架,并且有一些较小的项目.
django-piston多年来一直没有得到很好的维护.虽然它有一个新的维护者,但最好从http://djangopackages.com/grids/g/api/中选择更新的东西.

3> 小智..:

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



4> 小智..:

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

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

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

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

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有