J'essaie de concevoir un service de type de fichiers reposant et des opérations de copie / déplacement me causent des problèmes.
Tout d'abord, le téléchargement d'un nouveau fichier est effectué à l'aide d'une URL ultime du fichier: p> La question est, que si le nouveau fichier réside déjà sur le système sous une URL différente? P> Copie / Déplacement Idea 1 Fort >: Met avec des en-têtes personnalisés. P> Ceci est similaire à copie de S3 . Un Met qui ressemble au même que le téléchargement, mais avec un en-tête personnalisé: p> C'est bien car il est facile de changer le nom du fichier à la copie / Déplacer le temps. Cependant, S3 n'offre pas une opération de déplacement, peut-être parce qu'un geste utilisant ce schéma ne sera pas idempotent. P> copier / bouger idée 2 strong>: post vers le dossier parent. < / p>
5 Réponses :
La spécification HTTP indique si la ressource existe déjà, vous mettez à jour la ressource et renvoie 200. Si la ressource n'existe pas, vous le créez et vous revenez 201.
EDIT:
Ok, j'ai mal lu. Je préfère le poste à l'approche du dossier parent. Vous pouvez également vous référer au fichier source à l'aide d'un paramètre de chaîne de requête. e.g. p>
Désolé, je voulais dire si le nouveau fichier réside déjà sur le système à une URL différente. C'est-à-dire que je ne veux pas reprogrammer le fichier. Je veux juste que ce soit déplacé.
Nous sommes allés avec un poste au conteneur parent. Il semblait être la méthode la plus facilement comprise par les nouveaux arrivants. Merci pour les idées!
Vous devez envoyer les paramètres de l'URL dans le corps du post
@Tarion pourquoi? En utilisant ce type de média? Quel serait l'avantage?
Pour la partie Move, faites simplement un combo de copie (placez), puis supprimez si vous souhaitez le garder simple. p>
C'est une bonne idée, mais cela ressemble à une copie et déplacez-vous essentiellement de la même manière. Je ne suis pas sûr que déconstruire le mouvement m'achète beaucoup. :-(
Le reste ne se limite pas à l'ensemble par défaut de méthodes HTTP. Vous pouvez utiliser WebDAV dans ce cas. P>
C'est une idée intéressante! Je vais devoir regarder cela.
Pour créer une nouvelle ressource que vous utilisez habituellement POST CODE>. Cela devrait créer une nouvelle ressource sur une URI crée par le serveur. <album xmlns:atom="http://www.w3.org/2005/Atom">
<id>urn:example:album:1014</id>
<atom:link rel="self" href="http://www.example.org/albums/2009/08/1014"/>
...
</album>
pour le déplacement, vous pourriez p>
a). Copier via mettre avec une en-tête de source personnalisée suivie d'une suppression sur la source. P>
b). Supprimer la source avec un en-tête de déplacement personnalisé. P>
Je préfère ce dernier parce qu'il peut être atomique et il est clair pour le client que la ressource a été supprimée de la collection d'origine. Et quand il obtient la collection de son nouvel emplacement, il trouvera la ressource déplacée là-bas. P>