我有一个很好用的Django应用程序.我正在添加REST服务.我正在寻找关于我的REST策略的一些额外输入.
这里有一些我正在绞尽脑汁的例子.
现在,我正在使用带有一堆补丁的Django-REST API.
我想回到简单地在Django中编写返回JSON结果的视图函数.
我还可以看到在Apache中过滤REST请求并将它们路由到单独的非Django服务器实例.
请为每个答案指定一种方法,以便我们可以向上或向下投票.
我想回到简单地在Django中编写返回JSON结果的视图函数.
明确的
可移植到其他框架
不需要修补Django
请注意,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
对于其他寻找Django非常体面的可插拔API应用程序的人来说,请务必查看在BitBucket内部使用的jespern的django-piston.
它维护得很好,有很好的跟踪和一些很酷的分支,可以添加对分页和其他身份验证方法的支持(OAuth支持开箱即用).
更新以反映不再维护django-piston.
Tastypie也是Django新兴的REST框架.它与活塞具有相同的心态,并消除了大量的样板编码.
我在这里回答同一个问题:在Django中实现REST Web服务的框架
简短的版本是早期的https://github.com/jgorset/django-respite/一个REST框架,但我们每天都在客户端项目中使用它.