Ich liebe Akronyme *nicht*
Hypermedia as the Engine of Application State
und (heißt wirklich nur und)
Active Server Pages
.NET Framework
World Wide Web
Application Programming Interface
Open Data Protocol
Viele meinen wenn Sie REST schreiben/sagen die Repräsentation einer Datenmenge über eine URI. Da es keinen Standard gibt, sondern nur eine Dissertation ( und man weis heute genau wie diese entstehen), kann sich jeder reinfantasieren was er möchte. Ich habe auf den Microsoft Techdays in Basel dazu einen Vortrag gehalten, den man sich auch noch ansehen kann.
In der aktuellen Implementierung des Odata Stacks finden sich Konzepte die der statuslosen Zustandsbeschreibung folgen. Hypermedia interpretiere ich so, das die Daten Auskunft über ihren Zustand und Möglichkeiten geben. Ganz ähnlich wie das ein HTML Dokument im Browser auch tut.
Wenn im Modell einen klassische Relation definiert wird- wie Kunden Bestellungen-, dann mag das die ASP.NET Web Api nicht so (Stichwort zirkuläre Referenzen bei der JSON Serialisierung).
Es gibt einen Workaround für die WebApiConfig
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.
ReferenceLoopHandling.Ignore am Ende sieht das Ergebnis so aus
Das ist im Web nicht gut, weil viel zu viele Daten, auch redundant, übertragen werden. Wer sich mit EF beschäftigt kennt Lazy Loading.
nw.Configuration.LazyLoadingEnabled =
False Dann werden die Daten HATEOAS typisch übertragen. Man erkennt in den Daten, das eine Relation zu Orders besteht.
Eigentlich sollte jede Datenmenge über eine LINK Element zu identifizieren sein. Ist leider kein Standardverhalten. Also im klassischen (was für ein Wort) REST per /ALFKI.
Soweit ich das aktuell einschätze wird man einen Mediatypeformater brauchen oder in das Controller Event direkt eingreifen um die UIR/LINKS einzubauen. Typische Realisierungen könnten ein <link> Element oder ein href Attribut verwenden um die URI aufzunehmen. Auf MSDN kann man ein wenig dazu nachlesen.
Ein weiteres Fundstück hilft beim Paging. Die Daten sagen über sich selbst, das noch weitere Daten vorhanden sind und wie man diese abrufen kann. Dieser NextLink findet sich nur in der Odata Erweiterung.