是否有一份关于在服务器端使用不同基于python的REST框架来编写自己的RESTful api的推荐列表?最好有正反两面。
请随意在这里添加建议。:)
是否有一份关于在服务器端使用不同基于python的REST框架来编写自己的RESTful api的推荐列表?最好有正反两面。
请随意在这里添加建议。:)
当前回答
活塞是一个非常灵活的框架,用于为Django应用程序编写RESTful api。
其他回答
我强烈推荐TurboGears或Bottle:
TurboGears:
比django更简洁 更灵活,更少面向html 但是:不太出名
瓶:
非常快 非常容易学 但是:简约而不成熟
web2py包括对轻松构建RESTful API的支持,在这里和这里(视频)都有描述。特别要注意的是parse_as_rest,它允许您定义URL模式,将请求参数映射到数据库查询;和smart_query,它允许您在URL中传递任意自然语言查询。
现在似乎所有的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。
如果你正在使用Django,那么你可以考虑Django - tasttypie作为Django -活塞的替代方案。它比活塞更容易调优到非orm数据源,并且有大量的文档。