Python的轻量级REST微框架。
项目描述
已弃用。 我们现在已经是restless团队的一部分,因此开发将继续在那里进行。
restkiss
restless轻量级REST微框架的分支。
文档在http://restkiss.readthedocs.io/。
与Django、Flask、Pyramid、Tornado和Itty配合良好,但也应适用于许多其他Python Web框架。基于从Tastypie和其他REST库中学到的经验。
特性
小型、快速代码库
默认输出JSON,但可覆盖
RESTful
Python 3.2+(通过shim使Python 2.6+能够工作)
灵活
非特性
核心库中永远不会添加的功能 - 但鼓励使用插件!
自动ORM集成
授权(按对象或非按对象)
广泛的筛选选项
XML输出
元类
混入
HATEOAS
为什么?
创建者@toastdriven在构建原始restless时有一个非常具体的目标,我们的目标是要尊重它。以下就是它
> 简而言之,我关心创建灵活且RESTful的API。在构建 > Tastypie 时,我试图创建一个极其完整和全面的系统。 > 结果是编写了很多钩子方法(便于扩展)以及大量(看似)冗余的代码,因为我尝试以灵活/可覆盖的方式满足人们可能 > 需要/想要的一切。 > > 但实际上,我真正个人想要的只是RESTful动词、JSON > 序列化和覆盖行为的能力。 > > 这篇文章是为我自己写的,但也许对你们也很有用。
宣言
与其试图在每个视图中构建自动执行典型正确操作的系统,不如由你来实现各种HTTP方法的主体。
示例代码
# posts/api.py
from django.contrib.auth.models import User
from restkiss.dj import DjangoResource
from restkiss.preparers import FieldsPreparer
from posts.models import Post
class PostResource(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 /
def list(self):
return Post.objects.all()
# GET /pk/
def detail(self, pk):
return Post.objects.get(id=pk)
# POST /
def create(self):
return Post.objects.create(
title=self.data['title'],
user=User.objects.get(username=self.data['author']),
content=self.data['body']
)
# PUT /pk/
def update(self, pk):
try:
post = Post.objects.get(id=pk)
except Post.DoesNotExist:
post = Post()
post.title = self.data['title']
post.user = User.objects.get(username=self.data['author'])
post.content = self.data['body']
post.save()
return post
# DELETE /pk/
def delete(self, pk):
Post.objects.get(id=pk).delete()
连接钩子
# api/urls.py
from django.conf.urls.default import url, include
from posts.api import PostResource
urlpatterns = [
# The usual suspects, then...
url(r'^api/posts/', include(PostResource.urls())),
]
许可证
BSD
运行测试
测试套件使用 tox 来支持Python和Django的多个版本。当前支持的Python版本有
CPython 2.7
CPython 3.4
CPython 3.5
PyPy (Python 2.7)
PyPy3 (Python 3.2)
PyPy3 beta (Python 3.3)
你只需要安装上述Python解释器和 tox 包(通过 pip 获取),然后运行 tox 命令。
项目详情
下载文件
下载适合您平台的项目文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。