Cela me laisse perplexe depuis un moment.
Par exemple, nous avons une API REST qui fournit un contenu de base à un système, consommant et produisant du JSON. À ce point final, il produit une URL vers une image et une description, et se trouve comme ceci: // localhost / myApi / pictures / 1
{
id: 1,
description: "This is a pretty picture of a daisy",
URL: <OUR URL>
}
Maintenant, l'URL_URL doit pointer vers un emplacement sur l'API, par exemple // localhost / myApi / files / pictures / 1 qui renvoie un JPG (l'application derrière l'API lit le contenu physique du fichier, puis le retransmet au client ). Ceci est évidemment différent du reste de l'API qui produit des réponses JSON et il y aura des frais généraux de la lecture et du streaming du fichier réel.
Sinon, OUR_URL doit pointer vers une URL en dehors de la portée du service REST, donc //localhost/files/pictures/1.jpg où il lit le fichier directement.
La question est donc:
Une API RESTful doit-elle être capable de renvoyer des fichiers ou simplement un emplacement?
la source
Réponses:
Un service RESTful doit fournir des ressources aux utilisateurs de l'API. Les ressources peuvent avoir différents formats, qui vont de JSON ou XML à JPEG et HTML.
Il n'y a même pas d'exigence, ni même d'attente, qu'une seule API ne serve que des ressources d'un seul format. Il n'y a rien de mal à servir un document JSON sur l'URI
/myApi/pictures/1
et un fichier JPEG de l'URI/myApi/files/pictures/1
.Dans un cas plus extrême, il est même possible de servir à la fois la description JSON et le fichier JPEG à partir de la même URL, selon le format demandé par le demandeur.
la source
Un problème que vous rencontrerez en renvoyant simplement des URI est qu'un ancien serveur de fichiers ordinaire ne peut pas assurer la sécurité. Donc, si vous avez besoin de restreindre l'accès à un fichier, vous devrez pouvoir le renvoyer directement dans l'API REST (ou non, si l'utilisateur n'a pas de droits, le fichier est pas dans le bon état, etc.).
Sinon, le retour de l'ancien URI et le transfert à un CDN dédié présente de nombreux avantages en termes de provisionnement, de simplicité et d'évolutivité - en supposant que c'est tout ce que vous devez faire.
la source