Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SPA mit ASP.NET Core und Angular

Bestehende Daten verändern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Für die Veränderung bestehender Daten verwenden Sie das HTTP-Verb Put. Die möglichen Validierungen zeigt dieser Film.
07:11

Transkript

Neben dem Abrufen von Daten und der Anlage von neuen Datensätzen, ist eine häufige Anforderung in APIs, dass bestehende Daten auch verändert werden können. Das gilt auch für meine API, und deswegen möchte ich jetzt meinen Dishes Controller, den wir hier sehen, um eine Methode erweitern, die Daten verändern kann. Das HTTP-Verb, welches wir zum Verändern von Daten benutzen, das heißt HttpPut, zumindest wenn wir eine vollständige Änderung machen. Eine Anfrage, die mit dem Verb HttpPut geschickt wird, geht stets auf die URL, über die die Einzeldaten gelesen worden sind. Bedeutet, ich muss hier ähnlich wie im Fall von Get angeben, dass ich in der Anfrage eine Id übergeben muss. Anschließend kann ich meine Methode schreiben. Das wird eine öffentliche Methode sein, die ist vom Typ IActionResult und die heißt Put. Als ersten Parameter definiere ich den Parameter id, den ich über die URL übergebe, außerdem muss ich ein Objekt vom Typ Dish übergeben. Das sind die geänderten Daten. Und genauso wie bereits bei der Methode Post, muss ich auch bei der Methode Put darauf achten, dass ich das Attribut FromBody vor der Parameterdefinition schreibe. Andernfalls würden die Daten für meine Speise in der Adresszeile gesucht werden. In der Methode selber habe ich jetzt die Möglichkeit einige Plausibilitätsprüfungen vorzunehmen. Die erste Prüfung, die besteht schon immer darin, dass ich prüfe, ob die Id, die hier übergeben wird, überhaupt zu der Id passt, die in meinen Nutzdaten steht. Also, wenn mir also zum Beispiel in der URL jemand die Id 10 übergibt, in den Nutzdaten aber die Id 15, dann passt etwas nicht zusammen, denn ich weiß ja nicht mehr, soll ich das Objekt mit der Id 10 oder 15 aktualisieren. Darum prüfe ich hier erstmal, ob die übereinstimmen, beziehungsweise wenn das nicht der Fall ist, dann gebe ich eine Meldung zurück, und zwar den HTTP-Statuscode BadRequest 400. Den können wir auch zurückgeben, wenn unser ModelState nicht gültig ist. Das haben wir schon bei der Methode Post hier oben gesehen. Also if (! modelState.IsValid) dann soll doch bitte ein BadRequest zurückgegeben werden, HTTP-Statuscode 400, und zwar inklusive des ModelState, damit wir auch wissen, welche Fehler wir gemacht haben. Was darüber hinaus noch schiefgehen könnte, ist, dass ich einen Datensatz editieren möchte, der zwischenzeitlich gelöscht worden ist. Also schaue ich hier erstmal, ob denn dieser Datensatz überhaupt existiert, nämlich hier sage if (_repository.GetDishById (id), mit der id, wenn das null ist, spricht, der Datensatz ist nicht mehr existent, der ist gelöscht worden, dann gebe ich einen HTTP-Statuscode NotFound zurück, weil ich ja in diesem Moment keine Möglichkeit hatte die Daten tatsächlich zu ändern, sondern ich habe einfach nichts mehr gefunden. So, jetzt habe ich die ganzen Fehlerfälle abgefangen, nun werde ich tatsächlich die Speise, die übergeben worden ist, aktualisieren, und dazu habe ich in meinem Repository die Methode Update.Dish, übergebe dann hier die Speise. Ich bekomme ein Ergebnis zurück, nämlich die geänderte Speise und das kann ich dann hier über den Statuscode 200, okay, zurückgeben. In meinem Repository müssen wir die Methode Update noch implementieren. Aktuell wirft die noch eine NotImplementedException und das entfernen wir, und da das hier nur ein Dummy-Repository ist, werde ich hier erstmal gar nichts machen, sondern nur die Speise wieder zurückgeben. Wäre das ein echtes Repository, dann würde ich natürlich die darunterliegende Datenquelle aktualisieren, also entweder meine Datei, diese dishes.json aus der die ganzen Speisen kommen oder eben die Datenbank. So, schauen wir uns das Ergebnis einmal an. Ich starte meine Anwendung, wechsle dann, sobald das gestartet ist, in den Postman und werde dann einmal verschiedene Anfragen stellen, und zwar zuerst fehlerhafte und dann anschließend auch funktionierende Anfragen. Also, ab in den Postman, die URL lautet in meinem Fall zum Beispiel api/dishes/6, ich hole mir erstmal die Speise mit der Id 6 einmal ganz schnell, um mal zu gucken, was da so drin steht. Das sind also hier die Patatas bravas, das kopiere ich mir mal in die Zwischenablage, und jetzt wechsle ich das HTTP-Verb von Get auf Put, bedeutet, ich werde Änderungen machen. Ich schaue noch mal meine Header an, da steht schon drin, dass ich JSON rübersende, und jetzt muss ich den Body noch entsprechend eintragen. Und das erste, was ich mache, ist, dass ich hier eine andere Id übergebe und hier auch mal den Namen ändere, und jetzt sende ich das Ganze, und wir bekommen ein BadRequest. Ein BadRequest deswegen, weil die Id und die nicht gepasst haben. Das war also in meinem Quellcode dieser Zweig hier. Gucken wir uns jetzt mal den nächsten Zweig an, nämlich dass der ModelState nicht gültig ist. Und das haben wir zum Beispiel, wenn ich das hier einmal kurz raus lösche. Der Name ist nämlich zwingend erforderlich. So, und dann bekomme ich auch eine entsprechende Fehlermeldung, dass der Name erforderlich ist, so. Dann senden wir jetzt noch mal fast gültige Daten, nur mit einer Id, die es hier nicht gibt. Und da bekomme ich den Statuscode 404 Not Found zurück. Das war also dieser Fall hier. Und zu guter Letzt möchte ich auch einmal tatsächlich meine Daten aktualisieren, also hier einmal die 6 und hier einmal die 6, und hier das Ausrufezeichen und hier machen wir auch ein Ausrufezeichen rein, damit wir eine Datenänderung haben. Ich sende das Ganze ab, und diesmal bekomme ich den Statuscode 200 zurück und die geänderten Daten. Es hat also alles funktioniert. Wir haben also gesehen, der Fall, dass wir Daten ändern möchten, der sieht ganz ähnlich aus wie der Fall, dass wir Daten hinzufügen möchten. Wir benutzen hier ein anderes HTTP-Verb, nämlich das HTTP-Verb Put statt Post, und wir haben noch zwei Prüfungen, die wir mehr einbauen wollen. Das eine ist die Überprüfung, ob die Id der URL mit den Nutzdaten übereinstimmt, das andere ist die Überprüfung, ob es den Datensatz überhaupt noch gibt oder ob der vielleicht mittlerweile gelöscht worden ist.

SPA mit ASP.NET Core und Angular

Lernen Sie die Bestandteile von modernen Webanwendungen kennen und nutzen.

5 Std. 21 min (36 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.09.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!