Question

Ces 3 itinéraires sont-ils identiques ?Lequel est normalement préféré ?

[Route("/todo/{id}", "DELETE")]
[Route("/todo/delete","POST")]
[Route("/todo/delete/{id}","GET")]
public class DeleteTodo : IReturnVoid
{
    public int Id { get; set; }
}

Merci beaucoup...

Était-ce utile?

La solution

La voie privilégiée consiste en fait à inclure le Id dans le pathinfo depuis SUPPRIMER les requêtes n'ont pas de corps de requête HTTP sur lequel vous pouvez soumettre ces informations, par exemple :

[Route("/todo/{id}", "DELETE")]
public class DeleteTodo : IReturnVoid
{
    public int Id { get; set; }
}

Pour des raisons pragmatiques, vous souhaiterez peut-être autoriser un POSTE pour effectuer la suppression, car mes navigateurs par défaut (et certains proxys) n'autorisent pas l'envoi de requêtes DELETE.

[Route("/todo/{id}/delete", "POST")]
public class DeleteTodo : IReturnVoid
{
    public int Id { get; set; }
}

Vous pouvez simuler un SUPPRIMER requête en Ajax ou jQuery en ajoutant le Remplacement de la méthode X-Http En-tête de requête HTTP dans votre appel Ajax ou sous forme de champ dans votre FormData ou QueryString, par exemple.

POST /todo/1
X-Http-Method-Override=DELETE 

ou intégré dans le HTML FormData comme :

<form action="/todo/1" method="POST">
   <input type="hidden" name="X-Http-Method-Override" value="DELETE"/>
</form>

Bien qu'il soit important de ne pas autoriser les DELETE via GET, car par contrat, les GET ne devraient avoir aucun effet secondaire et peuvent donc être mis en cache et rejoués en toute sécurité par un middleware HTTP comme des proxys, etc.

Autres conseils

Si vous souhaitez suivre les directives de repos, vous ne devez pas utiliser GET ou POST pour supprimer une ressource.

Le verbe Get est utilisé pour lire une ressource. Une règle importante est-ce qu'une opération d'obtention est en sécurité. C'est-à-dire que cela peut être fait à plusieurs reprises sans changer visiblement l'état de la ressource. Cette propriété est Très important pour diverses raisons. Premièrement, les moteurs d'indexation utilisent obtenir indexer le contenu d'une ressource. Donc ce serait mauvais si indexable a la ressource a également changé. Deuxièmement, les intermédiaires, tels que les proxies, peut cacher les résultats d'une opération d'obtention pour accélérer les accès ultérieurs à la même ressource.

Les verbes de mise et de suppression permettent une demande de modifier l'état d'un ressource atomiquement.

Le post-verbe peut transporter diverses significations. C'est l'armée suisse Couteau de verbes http. Pour certaines ressources, il peut être utilisé pour modifier la état interne. Pour d'autres, son comportement peut être celui d'une télécommande appel de procédure.

Regardez ce page pour une description complète.

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