Python的轻量级REST微型框架。
项目描述
Python的轻量级REST微型框架。
文档在 https://restless.readthedocs.io/。
与Django、Flask、Pyramid、Tornado及Itty等Python Web框架配合使用效果出色,但同样适用于许多其他Python Web框架。基于从Tastypie及其他REST库中汲取的教训。
特性
小巧、快速的项目代码库
默认输出JSON,但可覆盖
RESTful
Python 3.6+
Django 2.2+
灵活
反特性
(永远不会添加的东西…)
自动ORM集成
授权(对象级或非对象级)
丰富的过滤选项
XML输出(尽管你可以实现自己的)
元类
混入
HATEOAS
为什么?
简单来说,我关心的是创建灵活且RESTful的API。在构建Tastypie时,我试图创建一个极为完整且全面的工具。结果是写了很多钩子方法(易于扩展)以及大量的(看似)冗余,因为我试图以灵活且可覆盖的方式满足人们对灵活/可覆盖的需求。
但事实上,我个人真正想要的只是一些RESTful动词、JSON序列化以及覆盖行为的能力。
这个是为我自己编写的,但也许对你也很有用。
宣言
而不是试图在每个视图中构建自动执行典型正确操作的东西,而是由你自己实现各种HTTP方法的内容。
示例代码
# posts/api.py
from django.contrib.auth.models import User
from restless.dj import DjangoResource
from restless.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 3.6
CPython 3.7
CPython 3.8
CPython 3.9
PyPy
你只需要安装上述Python解释器和tox包(通过pip获取),然后运行tox命令。
项目详情
关闭
restless-2.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 359f3c5c632a32382a27e7c93ec6f8e01c9f02e368a9e8b0e6bf310d21ff1d44 |
|
MD5 | a974ee962d3b5e88056449690714cccd |
|
BLAKE2b-256 | 293f1fd911a2422c8830ff312438c328b6200c70b849997d521253caac1e79ac |