Vorteile von WebInvoke POST im Vergleich zu WEBGET
Hallo habe ich eines der Beispiele von wcf-REST mit einem WEBINVOKE Methode wie die folgende
[OperationContract]
[WebInvoke(
BodyStyle=WebMessageBodyStyle.Bare,
Method="POST",
RequestFormat=WebMessageFormat.Xml,
ResponseFormat=WebMessageFormat.Xml,
UriTemplate="CreateStudent/{StudentName}/{Chair}/{AverageNote}")]
int Insert(string StudentName, string Chair, string AverageNote);
[OperationContract]
[WebGet(
BodyStyle= WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml)]
Student[] GetAllStudents();
meine Frage ist kann ich mit WEBGET-Methode anstelle von WEBINVOKE wie unten, und was genau ist der Unterschied zwischen WEBINVOKE POST und WEBGET,
nach meiner Beobachtung sind wir senden die Parameter durch Anhängen von query-strings in der URI-Templates für beide WEbGet und WebInvoke POST, was sind die Vorteile, die wir bekommen können verwenden WebInvoke POST, die können wir uns nicht mit WEBGET
[OperationContract]
[WebGet(
BodyStyle=WebMessageBodyStyle.Bare,
RequestFormat=WebMessageFormat.Xml,
ResponseFormat=WebMessageFormat.Xml,
UriTemplate="CreateStudent/{StudentName}/{Chair}/{AverageNote}")]
int Insert(string StudentName, string Chair, string AverageNote);
InformationsquelleAutor der Frage venkat | 2011-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es sehr großer Unterschied. Erstens REST ist in der Regel mit diesen verwendet HTTP-Verben:
Verwenden Sie niemals BEKOMMEN, für alles andere ist dann abrufen von Nachrichten. HTTP GET für die Modifikation der Daten wird als eine schlechte Praxis in der gesamten web-Entwicklung. Zum auslösen BEKOMMEN, Sie müssen nur zu erstellen-link auf der web-Seite oder geben Sie einfach eine URL an den browser. Sie werden auf aktualisieren 50 mal und du hast 50 gleiche Einsätze. Änderung von Daten sollte immer mit der POST. Wenn Sie haben eine form, die Trigger HTTP-POST (Post kann nicht ausgelöst werden, direkt) und Sie auf aktualisieren browser wird in der Regel Fragen Sie, wenn Sie möchten, dass das Formular erneut vorgelegt werden =, wenn Sie wirklich wollen, zu veröffentlichen und verarbeiten die Daten erneut an den server.
Ein weiteres problem ist, dass GET-Anforderung werden können, zwischengespeichert und weitergeleitet, aber POST-Anfragen nicht.
InformationsquelleAutor der Antwort Ladislav Mrnka
Dieser link sollte bieten weitere Einblicke in die Antworten:
http://blog.markkoltnuk.com/2011/02/14/understanding-wcf-webinvokewebget-attributes/
Können erklären, ein für alle mal, was der Unterschied zwischen WebInvoke & WebGet.
WebGet (Häufig verwendet, um Daten abzurufen)
Des WebGet-Attribut macht Operationen mit dem GET-verb. Sie können den Zugriff auf die endpoint ist direkt über einen Web-browser durch Eingabe der URI für den Dienst in der Adressleiste. Parameter, die gesendet werden können, innerhalb der URI, entweder als query-string-Parameter oder eingebettet in der URI. Die WebGet-Attribut sollte verwendet werden, nur für den Datenabruf durch seine caching-Funktionen.
WebInvoke (Häufig verwendet für die Dateneingabe/- Aktualisierung)
Die WebInvoke Attribut stellt Dienste mit anderen HTTP-Verben wie POST, PUT und DELETE. POST ist voreingestellt, kann aber verändert werden, indem Sie die Methode-Eigenschaft des Attributs. Die WebInvoke Attribut sollte nur verwendet werden, für die Dateneingabe/- Aktualisierung.
InformationsquelleAutor der Antwort ramizmoh
Deine Frage zu beantworten ich würde empfehlen, Sie zu verstehen, die HTTP-Protokoll-Semantik, insbesondere der HTTP-Verben wie GET, POST, PUT, DELETE
HTTP GET ist fertig zum abrufen von Ressourcen von jedem beliebigen Standort aus und deshalb ist die Forderung, sollten keinen Einfluss auf den Zustand der Ressource.
HTTP POST verwendet wird, zu erstellen und manchmal Inhalte aktualisiert und daher wurde in der Insert-Methode vor.
Wenn Sie den WCF-Dienst über und sehen, wie diese Anfrage gebildet und die server würden Sie sehen, dass BEKOMMEN nicht einen Körper haben, Nutzlast in der Erwägung, dass der POST hat. Im Falle der POST-der Körper enthält die Inhalte, die erstellt werden muss\update.
InformationsquelleAutor der Antwort Chandermani