是否有一份关于在服务器端使用不同基于python的REST框架来编写自己的RESTful api的推荐列表?最好有正反两面。

请随意在这里添加建议。:)


当前回答

我们正在开发一个严格REST服务的框架,请访问http://prestans.googlecode.com

目前还在Alpha测试阶段,我们正在测试mod_wsgi和谷歌的AppEngine。

寻找测试人员和反馈。谢谢。

其他回答

现在似乎所有的python web框架都可以实现RESTful接口。

对于Django来说,除了tasttypie和活塞,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/

我真的很喜欢樱桃皮。下面是一个基于rest的web服务的例子:

import cherrypy
from cherrypy import expose

class Converter:
    @expose
    def index(self):
        return "Hello World!"

    @expose
    def fahr_to_celc(self, degrees):
        temp = (float(degrees) - 32) * 5 / 9
        return "%.01f" % temp

    @expose
    def celc_to_fahr(self, degrees):
        temp = float(degrees) * 9 / 5 + 32
        return "%.01f" % temp

cherrypy.quickstart(Converter())

这强调了我真正喜欢CherryPy的地方;这是一个完全可行的例子,即使对不了解框架的人来说也是可以理解的。如果你运行这段代码,你可以立即在浏览器中看到结果;例如,访问http://localhost:8080/celc_to_fahr?degrees=50将在您的web浏览器中显示122.0。

我强烈推荐TurboGears或Bottle:

TurboGears:

比django更简洁 更灵活,更少面向html 但是:不太出名

瓶:

非常快 非常容易学 但是:简约而不成熟

2010年,塔和repoze。bfg社区“联合起来”创建了Pyramid,这是一个基于repoze.bfg的web框架。它保留了其父框架的理念,可用于基于rest的服务。值得一看。

没想到居然没人提到烧瓶。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()