Frage

Sind diese 3 Routen gleich?Welches wird normalerweise bevorzugt?

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

Vielen Dank...

War es hilfreich?

Lösung

Die bevorzugte Route besteht tatsächlich darin, die einzubeziehen Id in der Pfadinfo seitdem LÖSCHEN Anfragen haben keinen HTTP-Anfragetext, über den Sie diese Informationen übermitteln können, z. B.:

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

Aus pragmatischen Gründen möchten Sie möglicherweise Folgendes zulassen: POST um das DELETE durchzuführen, da meine Standardbrowser (und einige Proxys) das Senden von DELETE-Anfragen nicht zulassen.

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

Sie können a simulieren LÖSCHEN Anfrage in Ajax oder jQuery durch Hinzufügen von X-Http-Methodenüberschreibung HTTP-Request-Header in Ihrem Ajax-Aufruf oder als Feld in Ihrem FormData oder QueryString, z. B.

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

oder in die HTML FormData eingebettet wie:

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

Allerdings ist es wichtig, DELETEs über GET nicht zuzulassen, da GETs laut Vertrag keine Nebenwirkungen haben sollten und daher sicher zwischengespeichert und von HTTP-Middleware wie Proxys usw. wiedergegeben werden können.

Andere Tipps

Wenn Sie REST-Richtlinien folgen möchten, sollten Sie nicht verwenden, um eine Ressource zu löschen.

Das GET VERB wird verwendet, um eine Ressource zu lesen. Eine wichtige Faustregel ist, dass ein Get-Betrieb sicher ist. Das heißt, es kann wiederholt erfolgen ohne sichtbar den Zustand der Ressource zu ändern. Diese Eigenschaft ist. Sehr wichtig aus verschiedenen Gründen. Zunächst verwenden Indexierungsmotoren den Inhalt einer Ressource indexieren. Es wäre also schlecht, wenn man a indexiert Ressource hat es auch geändert. Zweitens, Intermediäre, wie Proxies, kann die Ergebnisse eines Get-Betriebs sperren, um nachfolgende Zugriffe zu beschleunigen auf dieselbe Ressource.

Die Put- und Löschverben ermöglichen eine Anforderung, den Zustand eines zu ändern Ressource atomalien.

Das Post Verb kann eine Vielzahl von Bedeutungen tragen. Es ist die Schweizer Armee Messer von HTTP-Verben. Bei einigen Ressourcen kann es verwendet werden, um das zu ändern internen Zustand. Für andere kann sein Verhalten das von einer Fernbedienung sein Prozedur Anruf.

werfen Sie einen Blick darauf, dass Seite für eine vollständige Beschreibung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top