Django-REST-Framework: Wann wird eine Hyperlink-Ressource erstellt und wann eine verschachtelte Ressource? Wie poste ich eine verschachtelte Ressource?

Ich erstelle eine REST-Web-API mit dem Django-REST-Framework. Die Dinge laufen großartig, aber ich bin auf ein Problem mit verschachtelten Ressourcen gestoßen. Zunächst wurden alle Beziehungen in der REST-API per Hyperlink verknüpft. Ein Beitrag sah zum Beispiel so aus:

{
    "path": "http://api.myproject.com/posts/1.json",
    "id": 1,
    "author": "http://api.myproject.com/users/broak.json",
    "image": "/images/posts/cxyUzlPo.jpg",
    "header": "Who am I?",
    "footer": "I am a champion!",
    "date": "2014-11-09 15:16",
    "likes": "http://api.myproject.com/posts/1/likes.json",
    "comments": "http://api.myproject.com/posts/1/comments.json",
    "likes_count": 0,
    "comments_count": 0
}

Die Beziehung zwischen dem Beitrag und dem Autor (Benutzer) ist mit einem Hyperlink versehen. Wenn Sie einen neuen Beitrag erstellen möchten, müssen Sie einen korrekten Hyperlink zu einem bestimmten Benutzer angeben - dies funktioniert einwandfrei.

Wenn Sie eine Liste von Posts aufrufen, wird es ineffizient, da Sie für jeden Author für jeden Post einen zusätzlichen API-Aufruf durchführen müssen. Ich habe dieses Problem gelöst, indem ich NESTED-Ressourcen anstelle von HYPERLINKED-Ressourcen verwendet habe. Daher enthält jeder Beitrag jetzt alle Informationen zum Autor.

{
    "path": "http://api.myproject.com/posts/1.json",
    "id": 1,
    "author": {
        "email": "[email protected]"
        "username": "broak",
        "first_name: "John",
        "last_name": "Broak",
        "is_staff": False,
        "is_active": True,
        ,"last_login": "02-26-2016"
    },
    "image": "/images/posts/cxyUzlPo.jpg",
    "header": "Who am I?",
    "footer": "I am a champion!",
    "date": "2014-11-09 15:16",
    "likes": "http://api.myproject.com/posts/1/likes.json",
    "comments": "http://api.myproject.com/posts/1/comments.json",
    "likes_count": 0,
    "comments_count": 0
}

Meine erste Frage lautet: Haben Sie eine Richtlinie, ob ich eine verschachtelte Datenstruktur oder einen separaten Endpunkt mit Hyperlink dazu erstellen soll?

Meine zweite Frage lautet: Wenn ich den Autor als verschachtelte Ressource verwende und einen neuen Beitrag erstellen möchte, möchte ich nicht alle Informationen zum Autor (Benutzername, E-Mail, ...) angeben. Gibt es eine Möglichkeit, nur einen Link zu einem Benutzer für die CREATE / UPDATE-Operation zu verwenden? Oder etwas ändern, damit die Benutzer-ID ausreicht, um dieses Feld auszufüllen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage