python的轻量级rest小框架。
restless的Python项目详细描述
python的轻量级rest小框架。
文档位于http://restless.readthedocs.org/。
与Django、Flask、Pyramid、Tornado&;Itty一起使用效果很好,但对于 许多其他python web框架。基于从Tastypie中学到的教训 &其他rest库(amp;O)。
功能
- 小而快速的代码库
- 默认情况下为json输出,但可重写
- 宁静
- python 3.2+(使用垫片使python 2.6+能够正常工作)
- Django 1.8+ <>柔性
反功能
(永远不会添加的内容…)
- 自动ORM集成
- 授权(是否按对象)
- 广泛的过滤选项
- XML输出(尽管您可以实现自己的输出)
- 元类 Mixins ><
- Hateoas
为什么?
很简单,我关心的是创建灵活和舒适的API。建筑物内 Tastypie,我试着创造一些非常完整和全面的东西。 结果是编写了许多钩子方法(以便于扩展)&;很多 因为我尽力照顾所有人 需要/以灵活的/可重写的方式。但实际上,我个人真正想要的是restful动词json 序列化—重写行为的能力。
这本是给我写的,但也许对你有用。
宣言
而不是尝试构建一些自动执行 每个视图中的正确内容,都由您来实现 各种http方法。
示例代码:
# posts/api.pyfromdjango.contrib.auth.modelsimportUserfromrestless.djimportDjangoResourcefromrestless.preparersimportFieldsPreparerfromposts.modelsimportPostclassPostResource(DjangoResource):# Controls what data is included in the serialized output.preparer=FieldsPreparer(fields={'id':'id','title':'title','author':'user.username','body':'content','posted_on':'posted_on',})# GET /deflist(self):returnPost.objects.all()# GET /pk/defdetail(self,pk):returnPost.objects.get(id=pk)# POST /defcreate(self):returnPost.objects.create(title=self.data['title'],user=User.objects.get(username=self.data['author']),content=self.data['body'])# PUT /pk/defupdate(self,pk):try:post=Post.objects.get(id=pk)exceptPost.DoesNotExist:post=Post()post.title=self.data['title']post.user=User.objects.get(username=self.data['author'])post.content=self.data['body']post.save()returnpost# DELETE /pk/defdelete(self,pk):Post.objects.get(id=pk).delete()
连接:
# api/urls.pyfromdjango.conf.urls.defaultimporturl,includefromposts.apiimportPostResourceurlpatterns=[# The usual suspects, then...url(r'^api/posts/',include(PostResource.urls())),]
许可证
bsd
运行测试
测试套件使用tox同时支持两个版本的多个版本 python和django。当前支持的python版本是:
- cpython 2.7
- cpython 3.3
- cpython 3.4
- cpython 3.5
- cpython 3.6
- pypy(python 2.7)
您只需要安装上面的python解释器和tox包 (通过pip可用),然后运行tox命令。