2015-06-08 16 views
18

Ich denke an den JSONAPI Standard für das Design unserer API. Eine Sache, die diese API tun kann, ist ein zusammengesetztes Dokument (mehrere Ebenen tief) zu akzeptieren und es zu erstellen. Das Root-Objekt besitzt alle Nachkommen ("to-many" -Beziehungen), über die der Server zu diesem Zeitpunkt nichts weiß, daher kann der Client keine ID bereitstellen.Wie erstelle ich zusammengesetzte Dokumente?

Wird dies von der Spezifikation unterstützt oder muss der Client HTTP-Anforderungen für jedes Objekt im Dokument in der Reihenfolge ausgeben?

Antwort

5

von http://jsonapi.org/format/#document-compound-documents

Compound-Dokumente benötigen „volle Verknüpfung“, was bedeutet, dass jeder enthalten Ressource muss durch mindestens einen Resource Identifier Objekt im selben Dokument identifiziert werden. Diese Ressourcen-ID-Objekte könnten entweder primäre Daten sein oder eine Ressourcenverknüpfung darstellen, die in primären oder enthaltenen Ressourcen enthalten ist. Die einzige Ausnahme von der vollständigen Verknüpfung Anforderung ist, wenn Beziehungsfelder, die sonst Verknüpfungsdaten enthalten würden, über Sparse Fieldsets ausgeschlossen werden.

{ 
    "data": [{ 
    "type": "articles", 
    "id": "1", 
    "attributes": { 
     "title": "JSON API paints my bikeshed!" 
    }, 
    "links": { 
     "self": "http://example.com/articles/1" 
    }, 
    "relationships": { 
     "author": { 
     "links": { 
      "self": "http://example.com/articles/1/relationships/author", 
      "related": "http://example.com/articles/1/author" 
     }, 
     "data": { "type": "people", "id": "9" } 
     }, 
     "comments": { 
     "links": { 
      "self": "http://example.com/articles/1/relationships/comments", 
      "related": "http://example.com/articles/1/comments" 
     }, 
     "data": [ 
      { "type": "comments", "id": "5" }, 
      { "type": "comments", "id": "12" } 
     ] 
     } 
    } 
    }], 
    "included": [{ 
    "type": "people", 
    "id": "9", 
    "attributes": { 
     "first-name": "Dan", 
     "last-name": "Gebhardt", 
     "twitter": "dgeb" 
    }, 
    "links": { 
     "self": "http://example.com/people/9" 
    } 
    }, { 
    "type": "comments", 
    "id": "5", 
    "attributes": { 
     "body": "First!" 
    }, 
    "links": { 
     "self": "http://example.com/comments/5" 
    } 
    }, { 
    "type": "comments", 
    "id": "12", 
    "attributes": { 
     "body": "I like XML better" 
    }, 
    "links": { 
     "self": "http://example.com/comments/12" 
    } 
    }] 
} 
+2

Dies setzt voraus, dass Sie die IDs der Ressourcen kennen Sie erstellen, in die Beziehungen zu setzen und Dokumente enthalten. Ich nehme an, Sie könnten den unbekannten IDs einen besonderen Wert geben und sie vom Server erstellen lassen. – Rob

Verwandte Themen