Comment voulez-vous mettre en œuvre de ressources de “modifier” les formes dans une bonne voie?

StackOverflow https://stackoverflow.com/questions/46004

  •  09-06-2019
  •  | 
  •  

Question

Nous tentons de mettre en place une API REST pour une application que nous avons maintenant.Nous voulons exposer les capacités de lecture/écriture pour les diverses ressources à l'aide de l'API REST.Comment pouvons-nous mettre en œuvre la "forme" de ceci?Je reçois comment exposer "lire" de nos données par la création d'Reposant Url essentiellement fonction des appels de méthode et de renvoyer les données:

GET /restapi/myobject?param=object-id-maybe

...et un document XML représentant un certain structure de données est retourné.Des beaux.

Mais, normalement, dans une application web, un "edit" impliquerait deux demandes:un pour charger la version actuelle des ressources et remplir le formulaire avec les données, et d'afficher les données modifiées en arrière.

Mais je ne comprends pas comment vous feriez la même chose avec des méthodes HTTP REPOS est une sorte de mappée.C'est un PUT, à droite?Quelqu'un peut-il expliquer cela?

(Contrepartie additionnelle:L'INTERFACE utilisateur serait principalement fait avec de l'AJAX)

-- Mise à jour:Qui aide vraiment.Mais, je suis encore un peu confus sur le serveur?Évidemment, je ne suis pas simplement à faire avec les fichiers ici.Sur le serveur, le code qui répond aux demandes de filtrage de la méthode de demande afin de déterminer quoi faire avec elle?C'est que le "switch" entre les lectures et les écritures?

Était-ce utile?

La solution

Si vous êtes à la soumission des données via l'HTML simple, vous êtes limité à faire un POST en fonction de la forme.L'URI de la requête POST est envoyé à ne devrait pas être l'URI de la ressource en cours de modification.Vous devez publier une collection de ressources qui Ajoute une ressource nouvellement créée à chaque fois (avec l'URI de la ressource nouvelle dans le Emplacement l'en-tête et un 202 code d'état) ou par la POSTE à un programme de mise à jour des ressources que les mises à jour d'une ressource fourni de l'URI de la demande de contenu (ou en-tête personnalisé).

Si vous utilisez un objet XmlHttpRequest, vous pouvez définir la méthode à METTRE et à soumettre les données de la ressource URI.Cela fonctionne aussi avec vide formes si le serveur fournit une URI valide pour le inexistants ressource.La première serait de créer de la ressource (de retour 202).Ultérieure options de vente soit ne rien faire, si ce sont les mêmes données ou d'en modifier les ressources existantes (dans les deux cas, une 200 est retourné, sauf si une erreur se produit).

Autres conseils

Il existe de nombreuses solutions de rechange que vous pouvez utiliser.Une bonne solution est fournie à l' wiki des microformats et a également été référencé par le repos JSON de l'équipage.Aussi proche que vous pouvez obtenir à une norme, vraiment.

 Operate on a Record

GET /people/1
    return the first record 
DELETE /people/1
    destroy the first record 
POST /people/1?_method=DELETE
    alias for DELETE, to compensate for browser limitations 

GET /people/1/edit
    return a form to edit the first record 
PUT /people/1
    submit fields for updating the first record 
POST /people/1?_method=PUT
    alias for PUT, to compensate for browser limitations 

Je pense que vous avez besoin de séparer des services de données à partir d'une INTERFACE web.Lors de la fourniture de services de données, un Réparateur de système est tout à fait approprié, y compris l'utilisation de verbes que les navigateurs ne supportent pas (comme PUT et DELETE).

Lors de la description d'une INTERFACE utilisateur, je pense que la plupart des gens confondent "Repos" avec "nice, prévisible Url".Je ne serais pas tout ce qui s'inquiétaient d'un purement Reposante de la syntaxe d'URL quand vous décrivez une INTERFACE web.

La charge doit être juste un normal en GET, et l'enregistrement de nouvelles données doivent être un POST à l'URL qui a actuellement les données...

Par exemple, charger les données actuelles de http://www.example.com/record/matt-s-example et puis, de modifier les données, et après revenir vers la même URL avec les nouvelles données.

Une demande qui pourrait être utilisé lors de la création d'un nouvel enregistrement (c'est à direMETTRE les données à une URL qui n'existe pas encore), mais dans la pratique, seulement l'Affichage est probablement la meilleure approche pour commencer avec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top