跳转到主要内容

Python的轻量级REST微框架。

项目描述

已弃用。 我们现在已经是restless团队的一部分,因此开发将继续在那里进行。

restkiss

https://travis-ci.org/CraveFood/restkiss.png?branch=master

restless轻量级REST微框架的分支。

文档在http://restkiss.readthedocs.io/

DjangoFlaskPyramidTornadoItty配合良好,但也应适用于许多其他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 命令。

项目详情


下载文件

下载适合您平台的项目文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

此版本没有提供源代码分发文件。请参阅 生成分发存档的教程

构建分发

restkiss-2.0.2-py2.py3-none-any.whl (22.7 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面