一个小巧的库,旨在使在Django中编写基于CBV的API更加容易。
项目描述
django-microapi
一个小巧的库,旨在使在Django中编写基于CBV的API更加容易。
本质上,这只是在普通的 django.views.generic.base.View
类上提供一些糖,目的是使处理JSON API更容易(无需完整的框架)。
用法
from django.contrib.auth.decorators import login_required
# We pull in two useful classes from `microapi`.
from microapi import ApiView, ModelSerializer
from .models import BlogPost
# Inherit from the `ApiView` class...
class BlogPostView(ApiView):
# ...then define `get`/`post`/`put`/`delete`/`patch` methods on the
# subclass.
# For example, we'll provide a list view on `get`.
def get(self, request):
posts = BlogPost.objects.all().order_by("-created")
# The `render` method automatically creates a JSON response from
# the provided data.
return self.render({
"success": True,
"posts": self.serialize_many(posts),
})
# And handle creating a new blog post on `post`.
@login_required
def post(self, request):
# Read the JSON
data = self.read_json(request)
# TODO: Validate the data here.
# Use the included `ModelSerializer` to load the user-provided data
# into a new `BlogPost`.
post = self.serializer.from_dict(BlogPost(), data)
# Don't forget to save!
post.save()
return self.render({
"success": True,
"post": self.serialize(post),
})
安装
$ pip install django-microapi
理由
目前有很多API框架(唉,我 构建 了两个)。但对于许多任务来说,它们要么是 过度设计,要么过于主观。
因此,django-microapi
有点像是这些框架的对立面。除了对View
进行微小扩展以提供更友好的错误之外,它不会自动调用任何内容。除了基于JSON之外,它对序列化、验证或URL结构没有意见。
您编写所需的端点,而microapi
则提供一些便利性,使编写该端点尽可能简单,而不做任何假设。
我一直对Django基于函数的视图的简洁性以及django.shortcuts
的便利性情有独钟。microapi
试图传递这种喜爱/简洁性。
API文档
https://django-microapi.rtfd.io/
测试
$ just test
许可证
New BSD
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
django-microapi-1.2.1.tar.gz (9.6 kB 查看散列值)
构建分布
django_microapi-1.2.1-py3-none-any.whl (11.2 kB 查看散列值)
关闭
django-microapi-1.2.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5a51cc5ecfc9dd71c88d46635f1fcb8c6454cf06312c01f3807a27b11b826b4f |
|
MD5 | a66efebdf25b24224797f396a6df88fc |
|
BLAKE2b-256 | 06c895be58162f0e0d5af1aaf9abaddf8b3e67bcdf99ba894dad3683e74bd148 |
关闭
django_microapi-1.2.1-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2ec0cec3987f62caae8d971c9a849b2d92bb86b178e1653c3b671cab6273b6b1 |
|
MD5 | fe6984995b93c5a3d6e8d0f754b962aa |
|
BLAKE2b-256 | b5eb9cd78b00dd7336e1b5a3040e19c68d110d55b533433be9d6f98c0cdda788 |