当前位置:  开发笔记 > 编程语言 > 正文

将REST添加到Django

如何解决《将REST添加到Django》经验,为你挑选了5个好方法。

我有一个很好用的Django应用程序.我正在添加REST服务.我正在寻找关于我的REST策略的一些额外输入.

这里有一些我正在绞尽脑汁的例子.

现在,我正在使用带有一堆补丁的Django-REST API.

我想回到简单地在Django中编写返回JSON结果的视图函数.

我还可以看到在Apache中过滤REST请求并将它们路由到单独的非Django服务器实例.

请为每个答案指定一种方法,以便我们可以向上或向下投票.



1> Ali Afshar..:

我想回到简单地在Django中编写返回JSON结果的视图函数.

明确的

可移植到其他框架

不需要修补Django


这篇文章有一些非常好的部分,但是作者断言应该将API密钥添加到URL中是错误的,并且是非RESTful的.这就是WWW-Authenticate和Authorization标题的用途.(请参阅Mike Amundsen和Ron Wail的评论,以获得更全面的解释)
这可以让你有一定的距离,但如果你想进行身份验证,那么请不要重新发明轮子 - 这就是我们在网络上结束大量不安全的网络应用程序的方式.这就是为什么我们都喜欢Django auth模块(我们这样做?不是我们......).一篇带有更多解释的好文章以["我恳求你跟随别人的榜样而不是推出自己的认证方案."](http://broadcast.oreilly.com/2009/12/principles-for-standardized-休息-authentication.html).

2> yfeldblum..:

请注意,REST并不仅仅意味着JSON结果.REST本质上意味着在本机但功能齐全的HTTP上公开面向资源的API.我不是REST的专家,但这里有一些Rails正在做的事情.

URL应该是资源的简单名称

使用正确的HTTP方法

HEAD,GET,POST,PUT和DELETE

(可选)使用覆盖(表单参数'_method'将覆盖HTTP请求方法)

通过Accept request-header支持内容类型协商

(可选)使用覆盖(URL中的文件扩展名将覆盖Accept请求标头中的MIME类型)

可用的内容类型应包括XML,XHTML,HTML,JSON,YAML以及其他许多其他内容

例如,要获得本机HTTP支持,服务器应该响应

GET /account/profile HTTP/1.1
Host: example.com
Accept: application/json

因为它会回应

GET /account/profile.json HTTP/1.1
Host: example.com

它应该回应

PUT /account/profile HTTP/1.1
Host: example.com

var=value

因为它会回应

POST /account/profile HTTP/1.1
Host: example.com

_method=PUT&var=value



3> oliland..:

对于其他寻找Django非常体面的可插拔API应用程序的人来说,请务必查看在BitBucket内部使用的jespern的django-piston.

它维护得很好,有很好的跟踪和一些很酷的分支,可以添加对分页和其他身份验证方法的支持(OAuth支持开箱即用).

更新以反映不再维护django-piston.


Django-piston不再被认为是"维护得很好".虽然代码在或多或少被放弃时是稳定的,但随着django(和社区)的继续,它已经并且将变得越来越过时.首先,有许多未解决的错误报告.活塞死了,django-tastypie和django-rest-framework.http://pydanny.com/choosing-an-api-framework-for-django.html
赞成编辑

4> RickyA..:

Tastypie也是Django新兴的REST框架.它与活塞具有相同的心态,并消除了大量的样板编码.



5> espenhogbakk..:

我在这里回答同一个问题:在Django中实现REST Web服务的框架

简短的版本是早期的https://github.com/jgorset/django-respite/一个REST框架,但我们每天都在客户端项目中使用它.

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