跳转到主要内容

一个小巧的库,旨在使在Django中编写基于CBV的API更加容易。

项目描述

django-microapi

Documentation Status

一个小巧的库,旨在使在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/

测试

要运行测试,您需要安装PipenvJust

$ 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 查看散列值)

上传时间 Python 3