it-swarm.com.de

Sollte eine RESTful-API in der Lage sein, Dateien oder nur einen Speicherort zurückzugeben

Das hat mich eine Weile verwirrt.

Zum Beispiel haben wir eine REST API, die grundlegende Inhalte für ein System bereitstellt, JSON verbraucht und produziert. An diesem Endpunkt erzeugt sie eine URL zu einem Bild und eine Beschreibung und wird wie folgt gefunden: // localhost/myApi/images/1

{
    id: 1,
    description: "This is a pretty picture of a daisy",
    URL: <OUR URL>
}

Jetzt sollte die OUR_URL auf einen Speicherort in der API verweisen, z. B. // localhost/myApi/files/images/1, der ein JPG zurückgibt (die Anwendung hinter der API liest den physischen Inhalt der Datei und überträgt ihn dann zurück an den Client ). Dies unterscheidet sich offensichtlich von der übrigen API, die JSON-Antworten erzeugt, und das Lesen und Streamen der eigentlichen Datei ist mit einem Overhead verbunden.

Alternativ sollte OUR_URL auf eine URL außerhalb des Bereichs des Dienstes REST) verweisen, also //localhost/files/pictures/1.jpg, wo die Datei direkt gelesen wird.

Die Frage ist also:

Sollte eine RESTful-API Dateien oder nur einen Speicherort zurückgeben können?

11
Crazy Dino

Ein RESTful-Service sollte den Benutzern der API Ressourcen bereitstellen. Ressourcen können verschiedene Formate haben, die von JSON oder XML bis JPEG und HTML reichen.

Es besteht nicht einmal die Anforderung oder Erwartung, dass eine einzelne API nur Ressourcen eines einzelnen Formats bereitstellt. Es ist nichts Falsches daran, ein JSON-Dokument auf dem URI bereitzustellen /myApi/pictures/1 und eine JPEG-Datei bilden den URI /myApi/files/pictures/1.
In einem extremeren Fall ist es sogar möglich, sowohl die JSON-Beschreibung als auch die JPEG-Datei unter derselben URL bereitzustellen, je nachdem, welches Format der Anforderer anfordert.

Ein Problem bei der Rückgabe von URIs besteht darin, dass ein einfacher alter Dateiserver keine Sicherheit bieten kann. Wenn Sie also eine Einschränkung für den Zugriff auf eine Datei vornehmen müssen, müssen Sie diese direkt in der API REST API) zurückgeben können (oder nicht, wenn die Benutzer hat keine Rechte, die Datei befindet sich nicht im richtigen Zustand usw.).

Andernfalls bietet die Rückgabe der einfachen alten URI und die Weitergabe an ein dediziertes CDN viele Vorteile in Bezug auf Bereitstellung, Einfachheit und Skalierbarkeit - vorausgesetzt, dies ist alles, was Sie tun müssen.

7
Telastyn