Skip to main content

A tiny library to make writing CBV-based APIs easier in Django.

Project description

django-microapi

Documentation Status

A tiny library to make writing CBV-based APIs easier in Django.

Essentially, this just provides some sugar on top of the plain old django.views.generic.base.View class, all with the intent of making handling JSON APIs easier (without the need for a full framework).

Usage

from django.contrib.auth.decorators import login_required

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`.
        serializer = ModelSerializer()
        post = serializer.from_dict(BlogPost(), data)
        # Don't forget to save!
        post.save()

        return self.render({
            "success": True,
            "post": self.serialize(post),
        })

Installation

$ pip install django-microapi

Rationale

There are a lot of API frameworks out there (hell, I built two of them). But for many tasks, they're either overkill or just too opinionated.

So django-microapi is kind of the antithesis to those. With the exception of a tiny extension to View for nicer errors, it doesn't call ANYTHING automatically. Other than being JSON-based, it doesn't have opinions on serialization, or validation, or URL structures.

You write the endpoints you want, and microapi brings some conveniences to the table to make writing that endpoint as simple as possible without assumptions.

I've long had a place in my heart for the simplicity of Django's function-based views, as well as the conveniences of django.shortcuts. microapi tries to channel that love/simplicity.

API Docs

https://django-microapi.rtfd.io/

License

New BSD

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-microapi-1.1.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

django_microapi-1.1.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file django-microapi-1.1.0.tar.gz.

File metadata

  • Download URL: django-microapi-1.1.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for django-microapi-1.1.0.tar.gz
Algorithm Hash digest
SHA256 5ce49f65f7d879fcd72b82ed75d109a553ce8391f088febeca4e2151a6087b22
MD5 95719314034f7e1cbd83909b64faf62d
BLAKE2b-256 ccaf50f87aedda8fc18c1f1997c161be23b7faa30f4584f36cac6bad7896927f

See more details on using hashes here.

File details

Details for the file django_microapi-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_microapi-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9917a534d86bb2be845fd41f454f780e3417628d4870c2e6f14cedf80875867
MD5 102742a13ba9866eed48ce7109825a25
BLAKE2b-256 436fccdbc6da0bbf32b03f3968a3b10057005a4201d1dc67f12fbac5fc7b4c42

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page