[PYTHON] [Django] Verwenden Sie MessagePack mit dem Django REST-Framework

Verwenden Sie MessagePack mit dem Django REST-Framework

Standardmäßig setzt die HTTP-Anforderung / Antwort der Django REST-Framework-Anwendung JSON voraus. JSON ist gut, aber Sie möchten MessagePack verwenden.

Um dies zu ändern, legen Sie Parser / Renderer fest.

Request --Parsers Antwort - Renderer

MessagePack wird standardmäßig nicht unterstützt, in der Dokumentation wird jedoch die Verwendung von djangorestframework-msgpack angegeben.

MessagePack is a fast, efficient binary serialization format.
Juan Riaza maintains the djangorestframework-msgpack package which provides MessagePack renderer and parser support for REST framework.

djangorestframework-msgpack

Installieren Sie djangorestframework-msgpack.

pip install djangorestframework-msgpack

Stellen Sie settings.py so ein, dass MessagePack verwendet wird.

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework_msgpack.parsers.MessagePackParser',
    ),
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework_msgpack.renderers.MessagePackRenderer',
    ),
}

Sie verwenden jetzt MessagePack.

Der Rest ist ein Bonus.

Verwenden Sie auch Django REST Swagger

Ich verwende Django REST Swagger, weiß aber nicht, wie ich MessagePack verwenden soll.

Daher kann in der Umgebung, in der Swagger verwendet wird (hier, wenn DEBUG = True), auch JSON verwendet werden.

if DEBUG == True:
    REST_FRAMEWORK = {
        'DEFAULT_PARSER_CLASSES': (
            'rest_framework_msgpack.parsers.MessagePackParser',
            'rest_framework.parsers.JSONParser',
        ),
        'DEFAULT_RENDERER_CLASSES': (
            'rest_framework_msgpack.renderers.MessagePackRenderer',
            'rest_framework.renderers.JSONRenderer',
            'rest_framework.renderers.BrowsableAPIRenderer',
        ),
    }
else:
    REST_FRAMEWORK = {
        'DEFAULT_PARSER_CLASSES': (
            'rest_framework_msgpack.parsers.MessagePackParser',
        ),
        'DEFAULT_RENDERER_CLASSES': (
            'rest_framework_msgpack.renderers.MessagePackRenderer',
        ),
    }

Die Reihenfolge ist wichtig. Da die Oberseite die Hauptleitung ist, schreibe ich das Nachrichtenpaket als Hauptleitung.

BrowsableAPIRenderer ist für dies. Ich benutze es jetzt nicht, aber ich lege es hinein.

Der Kommunikationstest wird mit MessagePack durchgeführt

Schreiben Sie, um MessagePack beim Testen der Kommunikation zu verwenden. Es macht keinen Sinn, mit JSON zu testen.

import msgpack

from django.test import TestCase

class ApiUsersTestCase(TestCase):
    def test_put_users_pk_ok(self):
        """
Zum Beispiel eine API, die Benutzerparameter festlegt
Da es sich um ein Bild handelt, handelt es sich nur um einen einfachen Test
        """
        
        pk = 1
        params = {
            "name": "Trumpf"
        }

        response = self.client.put("/users/{0}/".format(pk), msgpack.packb(params, use_bin_type=True), "application/msgpack")
        self.assertEqual(response.status_code, 201)
        
        content = msgpack.unpackb(response.content, encoding='utf-8')
        self.assertEqual(content["name"], params["name"])

Recommended Posts

[Django] Verwenden Sie MessagePack mit dem Django REST-Framework
Django REST Framework mit Vue.js
Melden Sie sich mit dem Django Rest Framework an
Erstellen Sie eine RESTful-API mit dem Django Rest Framework
CRUD POST mit Nuxt & Django REST Framework
CRUD GET mit Nuxt & Django REST Framework ①
Verwenden Sie Gentelella mit Django
Grundlagen des Django REST-Frameworks
Verwenden Sie WENIGER mit Django
Verwenden Sie MySQL mit Django
Tipps zum Django Rest Framework
CRUD PUT, DELETE mit Nuxt & Django REST Framework
Implementierung der Authentifizierungsfunktion in Django REST Framework mit djoser
Django REST Framework Stolperstein
Verwenden Sie prefetch_related bequem mit Django
Erstellen Sie eine Todo-App mit Django REST Framework + Angular
Wenn Sie mit dem Django REST-Framework filtern möchten
Implementieren Sie hierarchische URLs mit drf-verschachtelten Routern im Django REST-Framework
Verwenden Sie Unicode 6.0-Piktogramme mit Django / MySQL
Implementierung von CRUD mithilfe der REST-API mit Python + Django Rest Framework + igGrid
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Logisches Löschen in Django, DRF (Django REST Framework)
Verstehen Sie den Komfort des Django Rest Framework
Ein Verwaltungstool, das sofort mit dem REST-Framework ng-admin + Django erstellt werden kann
Verschiedene Hinweise zum Django REST-Framework
Überlegungen zum Design von Django REST Framework + Clean Architecture
Implementierung der benutzerdefinierten Authentifizierungsfunktion für Benutzermodelle in Django REST Framework mit djoser
Internationalisierung mit Django
CRUD mit Django
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
Verwenden Sie zusätzliche Python-Pakete mit Serverless Framework (v1.x)
Django REST Framework Ein wenig nützlich zu wissen.
Implementieren Sie die JWT-Anmeldefunktion im Django REST-Framework
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
So generieren Sie automatisch ein API-Dokument mit dem Django REST-Framework und POST vom Dokumentbildschirm
Authentifizieren Sie Google mit Django
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
Entwicklungsverdauung mit Django
Verwenden Sie RTX 3090 mit PyTorch
Verwenden Sie ansible mit cygwin
Django Python Web Framework
Verwenden Sie pipdeptree mit virtualenv
PDF mit Django ausgeben
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mock mit Pytest
Markdown-Ausgabe mit Django
Twitter OAuth mit Django
Verwenden Sie Tensorboard mit Chainer
Verwenden Sie DynamoDB mit Python
Verwenden Sie pip mit MSYS2
Erste Schritte mit Django 1
Manchmal möchten Sie mit DRF (Django REST Framework) auf View information from Serializer zugreifen.
Listenmethode für verschachtelte Ressourcen im Django REST-Framework
Implementieren Sie die API mit explosiver Geschwindigkeit mithilfe des Django REST Framework
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Copyright mit Spacemacs
Datei-Upload mit Django
Verwenden Sie Python mit Docker
[Django Rest Framework] Passen Sie die Filterfunktion mit Django-Filter an
Pooling mechanisieren mit Django