REST API mit demselben Objekt, aber leicht

8

Wir erstellen eine REST-API, und wir möchten dasselbe Objekt zurückgeben, aber ein Aufruf ist eine "Light" -Version (ohne das gesamte Feld)

Was ist die beste Vorgehensweise?

1. Fall

2. Fall

3. Fall

4. Fall?

Jeder Link zu einer dokumentierten Ressource einer REST-API ist willkommen!

Danke.

    
Baptiste Pernet 21.10.2011, 08:30
quelle

2 Antworten

9

Dies sollte durch Content-Verhandlung behandelt werden, dafür ist es zuständig. Inhaltsverhandlung ist, wie ein Client anfordern kann, welche Repräsentation der Ressource er sehen möchte. Betrachten Sie den Fall eines Bildes: image / x-canon-cr2, image / jpeg, image / png.

Scheinbar das gleiche Bild, aber in verschiedenen Formaten.

Dies ist also der Mechanismus, den Sie wirklich für eine "Lite" -Version Ihrer Ressource verwenden möchten. Zum Beispiel könnten Sie verwenden:

  • "application / xhtml + xml" für die Hauptversion
  • "application / xhtml + xml; lite" für die Version mit geringem Gewicht

Also, für eine vollständige Ressource:

%Vor%

Für eine Light-Version

%Vor%

Für beide, aber bevorzugen die Lite-Version:

%Vor%

(der spezifischere Spezifizierer, d. h. der mit lite, hat eine höhere Priorität als die normale Anwendung / xhtml + xml.)

Wenn Sie beides übernehmen, aber die Vollversion bevorzugen:

%Vor%

Jene ohne einen Qualitätsfaktor haben den Standardwert 1.0, also ist 0.1 kleiner als 1.0 und Sie erhalten die Vollversion, wenn sie über die Lite-Version verfügbar ist.

Nachtrag:

Der q-Faktor von Accept wird effektiv verwendet, um die Präferenzen des Clients anzuzeigen. Es wird verwendet, um die Liste der Medientypen zu priorisieren, die der Client akzeptiert. Es heißt: "Ich kann mit diesen Medientypen umgehen, aber ich bevorzuge ein Over und b über c".

Ein JPEG gegenüber einem PNG unterscheidet sich nicht von der lite vs Vollversion. Die Tatsache, dass ein JPEG dem ursprünglichen PNG ähnlich sieht, ist eine optische Täuschung, die Daten sind sehr unterschiedlich und sie haben unterschiedliche Anwendungen. Ein JPEG ist nicht "minderwertig", es sind andere Daten. Es sind "fehlende Felder". Wenn ich sagen möchte, die Bildgröße, das JPEG wird mir diese Informationen genauso gut wie ein PNG würde. In diesem Fall ist die Qualität für die Aufgabe ausreichend. Wenn es nicht angemessen war, dann sollte ich es nicht verlangen.

Ich kann garantieren, dass, wenn ich einen Client habe, der nur PNG verarbeiten kann und nach einem JPEG fragt, dann wird dieses Programm nicht gleich gut damit arbeiten. Wenn mein Sohn Hühnchenfinger will und ich ihm Spinatcreme gebe, dann wird es Probleme geben, auch wenn beide die Repräsentation der Ressource / des Abendessens sind.

Die Darstellung "application / xhtml + xml; lite" ist genau das - eine Repräsentation, es ist NICHT die Ressource selbst. Deshalb wird die Wortdarstellung verwendet. Die Darstellungen sind alles nur Projektionen von der tatsächlichen Ressource, bei der es sich um eine virtuelle Entität auf dem Server handelt, die intern in einer undefinierten Weise realisiert wird.

Einige Darstellungen sind normativ, manche nicht.

Darstellungen werden über Medientypen angezeigt, und Medientypen werden über Con-neg und den ACCEPT-Header behandelt. Wenn Sie mit einer Repräsentation nicht umgehen können, fragen Sie nicht danach.

Dies ist ein con-neg Problem.

Ich weiß nicht, was ein "Medienspieler" mit dieser Diskussion zu tun hat.

    
Will Hartung 21.10.2011, 17:46
quelle
7

Der 1. Fall und der 3. Fall haben den Vorteil, dass eine URL für eine einzelne Ressource verwendet wird und die Abfragezeichenfolge verwendet wird, um eine bestimmte Ansicht dieser Ressource anzufordern. Die Auswahl zwischen ihnen ist eine Frage des Geschmacks, aber ich bevorzuge einen Standard, alle Daten zu erhalten und die Optionen zum Anzeigen von Teilmengen zu speichern.

    
Raymond Hettinger 21.10.2011 08:37
quelle

Tags und Links