Django REST Framework: Eine API mit klaren Berechtigungen aufbauen

  • 27 Aug 2025
  • CODLAB Team
  • 2 min

Django REST Framework verbindet Datenmodelle mit einer HTTP-Schnittstelle. Für eine brauchbare API benötigen Sie neben den Endpunkten einen klaren Vertrag: Welche Daten darf ein angemeldeter Nutzer sehen, welche Änderungen sind erlaubt und wie werden Fehler zurückgegeben? Ein ViewSet nimmt Ihnen diese Entscheidungen nicht ab.

Modell und Ausgabe getrennt festlegen

Das folgende Beispiel gehört in eine bereits eingerichtete Django-App namens api. Django und Django REST Framework müssen installiert, die App registriert und die Migrationen ausgeführt sein. Es zeigt eine einfache Objektverwaltung; eine Mandantentrennung ist darin nicht enthalten. Der Serializer nennt die erlaubten Felder ausdrücklich, damit spätere Modelländerungen nicht automatisch Teil der öffentlichen API werden.

# models.py in der App 'api'
from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

# serializers.py in der App 'api'
from rest_framework import serializers
from .models import Item

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('id', 'name', 'description')

# views.py in der App 'api'
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from .models import Item
from .serializers import ItemSerializer

class ItemViewSet(viewsets.ModelViewSet):
    permission_classes = [IsAuthenticated]
    queryset = Item.objects.all()
    serializer_class = ItemSerializer

# urls.py in der App 'api'
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ItemViewSet

router = DefaultRouter()
router.register(r'items', ItemViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

Berechtigungen auf den Anwendungsfall zuschneiden

IsAuthenticated verlangt eine Anmeldung. Alle angemeldeten Nutzer sehen in diesem Beispiel dieselben Objekte. Wenn Daten einem Kunden oder Eigentümer gehören, müssen Sie die Auswahl im QuerySet und die Rechte auf einzelne Objekte entsprechend begrenzen. Prüfen Sie außerdem die erlaubten Felder beim Anlegen und Bearbeiten. Eine erfolgreiche Anmeldung ist keine Freigabe für sämtliche Daten.

Verhalten prüfen, bevor Sie die API freigeben

Testen Sie die Endpunkte mit gültigen und ungültigen Eingaben sowie mit verschiedenen Benutzerrollen. Eine Anfrage ohne Anmeldung muss abgewiesen werden; ein Nutzer darf keine fremden geschützten Objekte lesen oder ändern. Legen Sie Pagination, Fehlerformat und das Verhalten bei unbekannten IDs fest. Dokumentieren Sie diese Regeln zusammen mit den Endpunkten, damit ein Client sie verlässlich verwenden kann.

Für den Betrieb kommen passende Authentifizierung, HTTPS, Überwachung und Schutz vor übermäßiger Last hinzu. Die Auswahl hängt von Ihren Clients und der Infrastruktur ab. Aus dem kompakten Beispiel lässt sich deshalb keine Aussage über die Sicherheit oder Belastbarkeit einer konkreten Installation ableiten.

Weiterführende Dokumentation: Django REST Framework: Permissions.

Teilen Sie diesen Artikel

Kunden

Noch keine Kommentare. Schreiben Sie den ersten!

Einen Kommentar hinterlassen

Wird nicht veröffentlicht

Verwandte Artikel

Projekt im Kopf?

Wir entwickeln maßgeschneiderte Software und KI-Lösungen. Lassen Sie uns gemeinsam Ihr nächstes Projekt starten.

Kostenloses Erstgespräch