Verknüpfungsbeziehungen in JSON-Darstellungen

Ich bin entwerfen eines RESTful-API auf Basis der JSON-Darstellungen. Um das zu erfüllen, HATEOAS, ich links zwischen Ressourcen intensiv. Deshalb folgte ich dieser Vorschlag zum serialisieren links in Art und Weise sehr ähnlich zu ATOM links.

Nun habe ich manchmal Schwierigkeiten, den richtigen link-relation geben. Wenn eine Ressource enthält einen Verweis auf sich selbst, die self Bezug ist offensichtlich. Es wird immer komplizierter, wenn die Ressourcen-Sammlungen und Anhäufungen von sub-Ressourcen, oder Sie enthalten viele links zu verwandten Ressourcen.

Nehmen einen blog-post als Beispiel, und denken Sie an eine Ressource, liefert einen snapshot der blog-post – inklusive dem Autor, tags und Kommentare zu diesem blog-post.
Offensichtlich, diese Ressource enthält viele subresources und sollte natürlich bietet auch separate links für Sie:

Beispiel-Ressource:

{
   "blogpost":{
      "link":{
         "rel":"self",
         "href":"http://blog/post/4711"
      },
      "author":{
         "name":"Bob",
         "link":{
            "rel":"???",
            "href":"http://author/uri"
         }
      },
      "title":"foobar",
      "content":"A long article here…",
      "comments":[
         {
            "comment":"great article",
            "link":{
               "rel":"???",
               "href":"http://blog/post/4711/comment/1"
            },
            "author":{
               "name":"John Doe",
               "link":{
                  "rel":"???",
                  "href":"http://author/uri"
               }
            }
         }
      ],
      "tags":[
         {
            "value":"foo",
            "link":{
               "rel":"???",
               "href":"http://blog/post/4711/tag/foo"
            }
         }
      ]
   }
}

Also, was sind die entsprechenden Beziehungen für die angegebenen links? Ich weiß, dass es gegenüber Typen wie tagaber nicht alle meine Ressourcen entsprechen den vorhandenen relationstypen. Oder ist es in Ordnung, zu verwenden self bei der Bezugnahme auf die Autor/Tags/kommentieren, denn es bezieht sich auf den Kontext des umgebenden JSON (sub-)Objekt? Was ist die semantische Einheit self bezieht?

RFC 5988 Staaten:

Kontext der link ist entweder ein Futtermittel-IRI oder eine Eintrags-ID, abhängig davon, wo es erscheint

Wie kann ich interpretieren diese in Bezug auf JSON? Ist jedes neue Objekt {…} einen neuen Kontext?

Dank!

InformationsquelleAutor der Frage b_erb | 2011-08-09

Schreibe einen Kommentar