Ich versuche eine RESTful Weise zu bestimmen, Subresources enthalten und für bestimmte Anforderungen beliebig ausgeschlossen werden.REST-API einschließlich und exklusive von Sub-Ressourcen
Zum Beispiel willen, könnte dies die ursprüngliche Anforderung sein:
GET Abteilungen/321
200 (Ok)
{
"id": "321",
"name": "Sales",
"building": "The Foundary"
"subdepartments": [
{
"id": "123",
"name": "Training"
},
{
"id": "224",
"name": "Book Sales"
}
...
]
}
Es könnte eine große Liste von Unterabteilungen sein. Die Ressource GET departments
würde dann auch jede Abteilung UND jede Unterabteilung dieser Abteilungen einschließen. Viele Daten.
Dies könnte durch die Schaffung von zwei getrennten Ressourcen gelöst werden:
GET Abteilungen/321
200 (Ok)
{
"id": "3",
"name": "Sales",
"building": "The Foundary"
}
GET Abteilungen/321/Sub-Waren
200 (Ok)
[
{
"id": "123",
"name": "Training"
},
{
"id": "224",
"name": "Book Sales"
}
...
]
Aber es kann sein, Anlässe, bei denen die Client-Software es vorziehen würde, nicht mehrere Anfragen zu stellen (um der Leistung willen am wahrscheinlichsten). Vielleicht, indem ein include
Filter:
GET Abteilungen/321 include = Unterabteilungen
200 (Ok)
{
"id": "321",
"name": "Sales",
"building": "The Foundary"
"subdepartments": [
{
"id": "123",
"name": "Training"
},
{
"id": "224",
"name": "Book Sales"
}
...
]
}
oder ein Ausschluss-Filter:
GET Abteilungen/321 ausschließen = Unterabteilungen
200 (Ok)
{
"id": "321",
"name": "Sales",
"building": "The Foundary"
}
Obwohl wir vielleicht inc lude einen Link zu der Subresource, wenn sie ausgeschlossen ist?
GET Abteilungen/321? Ausschließen = Sub-Waren
200 (Ok)
{
"id": "321",
"name": "Sales",
"building": "The Foundary"
"subdepartments": {
"href" : "api.com/departments/321/subresources"
}
}
Gibt es eine akzeptable RESTful Weise, die oben von der Durchführung einschließlich oder ausschließlich von Subressourcen?
Was Sie vorschlagen, sieht gut aus. Ich denke RESTful sollte nicht zu streng verwendet werden. Wenn deine Welt nicht in REST passt, dann sollte REST gebogen werden - nicht die Welt. – Kris