5

Ich arbeite an einem ASP.Net Web API 2 REST-fähigen Web-Service für den Import und Export von Daten aus meiner Datenbank. Für meine Exportmethode hat der Client mehrere Optionen zum Exportieren von Daten in verschiedenen Formaten (z. B. pdf, XML usw.). Ich versuche, das beste Design für meine Schnittstelle zu ermitteln, damit der Client dem Dienst mitteilen kann, welches Format die Daten bereitstellen soll.GET-Anfrage - gewünschtes Antwortformat im Parameter oder Accept-Header

Soweit ich das beurteilen kann, sind meine 2 besten Optionen, den Accept Header mit Medientyp zu verwenden Zeichenfolgen oder Hinzufügen eines Parameters zur Methode, bei der der Client den Formatparameter in der Abfragezeichenfolge angeben kann. Wenn ich den Accept-Header verwende, kann dies die Verwendung von benutzerdefinierten Medientyp-Strings beinhalten.

Es scheint mir, dass die Verwendung der Accept-Header mehr inline mit HTTP-Standards und RESTful Praktiken wäre, aber die Verwendung des Formatparameters in der Abfragezeichenfolge wäre einfacher auf der Service-Seite und für den Client zu implementieren.

Kann jemand erklären, was einige der Vorteile oder Nachteile dieser 2 Entwürfe sind?

Antwort

3

Beide Ansätze sind gültige Möglichkeiten, um zum selben Ergebnis zu kommen. REST ist keine zu implementierende Spezifikation. Daher ist die Antwort, die Sie hier erhalten, wahrscheinlich die bevorzugte Vorgehensweise von jemandem, oder wie er REST verstanden hat.

Ihre Frage ist ähnlich wie diese von Programmierern.SE: Tradeoffs between content negotiation via Accept header versus extensions. Beachten Sie auch, dass pdf, xml etc standardmäßig erkannte MIME-Typen haben, so dass ich keine Notwendigkeit für benutzerdefinierte Medientyp-Zeichenfolgen sehe.

Das heißt, meine bevorzugte Art, den Bericht zu erhalten, wäre eine ?format=pdf Abfragezeichenfolge. Gehen Sie mit allem, was einfacher, wartungsfreundlicher, sauberer usw. ist.