Dieser Code, der result
zurückgibt, wird nicht kompiliert, da result
nicht IHttpActionResult
...
Die Rückgabe von Json()
gibt immer HTTP 200 und das Ergebnis im JSON-Format zurück, unabhängig davon, welches Format sich im Accept-Header der eingehenden Anfrage befindet.
Die Rückgabe von Ok()
gibt HTTP 200 zurück, aber das Ergebnis wird basierend auf dem Format formatiert, das im Kopf der Accept-Anfrage angegeben wurde.
Nur eine Ergänzung zu früheren Erklärungen:
Die Rückgabetypen für Ihre Funktionen sind: IHttpActionResult
Daher wird erwartet, dass die Methode eine IHttpActionResult
zurückgibt, die eine Schnittstelle für HttpResponseMessage
ist. Das HttpResponseMessage
hat nützliche Eigenschaften wie Header, Inhalt und Statuscode.
Daher gibt Ok(result)
einen HttpResponseMessage
mit Ok
Statuscode und den Inhalt zurück, was in diesem Fall das Ergebnis ist. In der Zwischenzeit konvertiert Json(result)
das Objekt in das json-Format, auch Serialisierung genannt, und das wird als Inhalt in HttpResponseMessage
platziert.
Das beste an einem Web-API mit ASP.NET ist, dass es einfache Wege schafft, die HTTP-Antworten durch Abstraktion zu übergeben. Das Schlimmste ist, dass man ein wenig Verständnis braucht, bevor man die relativ einfachen Methoden benutzt.
Hier gibt es mehr Infos dazu serilisation und json
Hier geht es mehr um Infos über IHttpActionResult
Tags und Links asp.net-web-api asp.net asp.net-web-api2