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

Datensatz auslesen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Einzelne Datensätze werden über das HTTP-Verb Get anhand eines eindeutigen Bezeichners abgerufen. Falls es keinen Datensatz zum übergebenen Schlüssel gibt, ist es wichtig, dies dem Konsumenten der API über den korrekten HTTP-Status-Code mitzuteilen.
06:53

Transkript

Meine API kann über den Dishes-Controller, denn ich hier geöffnet habe, bereist eine Liste von Speisen zurückgeben und zwar mit der Methode Get. Nun möchte ich das Ganze gerne erweitern und zwar um die Funktionalität, dass ich eine bestimmte Speise anhand der Speisen-ID zurückgebe. dazu lege ich eine neue Methode an und diese ist dieses mal nicht vom Typ der Rückgabe, also zum Beispiel vom Typ Dish, sondern diese ist vom Typ IActionResult. Über IActionResult habe ich nämlich die Möglichkeit auch den Http-Statuscode zu beeinflussen. Warum ich das bei dieser Methode benötige, bei der davor jedoch nicht, das werde ich Ihnen gleich auch noch erklären. Dei Methode, die nenne ich auch wieder Get, allerdings habe ich hier eine Überladung und zwar eine Überladung, die eine ID als Argument erwartet. Innerhalb der Methode gehe ich jetzt relativ simpel vor. Ich hole mir über mein Repository, was mir hier oben in den Konstruktor injiziert wird, eine bestimmte Speise über die Methode GetDishById und übergebe die ID. So, diese Speise, die gebe ich zu guter Letzt zurück und zwar mit einem Http-Statuscode 200. Dazu benutze ich die Methode OK und an OK übergebe ich das Objekt was ich zurückgeben möchte, in meinem Fall also das Speisenobjekt. Warum habe ich jetzt an dieser Stelle IActionResult gewählt und nicht den Typen Dish? Hier oben bei der Methode, die mir alle Speisen zurückliefert, habe ich zum Beispiel auch als Rückgabetyp eine Auflistung von Speisen gewählt. Der Grund ist folgender, wenn ich eine bestimmte ID übergebe, dann habe ich im Endeffekt zwei Möglichkeiten. Möglichkeit eins ist, es gibt einen Datensatz dazu. Möglichkeit zwei, es gibt keinen. Wenn es einen gibt, dann möchte ich den Statuscode 200 zurückgeben und den entsprechenden Datensatz. Wenn es keinen gibt, dann möchte ich nicht 200 zurückgeben und einen leeren Wert, sondern ich möchte den Http-Statuscode benutzen, der dafür vorgesehen ist und das ist der Statuscode 404 oder NotFound. Bedeutet also, ich kann hier folgendes machen, ich kann hier prüfen, ob von meinem Repository ein Null-Wert zurückkam. Und wenn dem so ist, dann gebe ich eben nicht ein Statuscode 200 bei dem Objekt zurück, sondern dann gebe ich NotFound zurück. Und NotFound das ist hier eine Methode, die an der Basisklasse Controller definiert ist und die gibt einfach den Statuscode 404 zurück. Eine Kleinigkeit muss ich jetzt noch machen, nachdem ich die Methode geschrieben habe, um dem Routing-System zu helfen und zwar weiß das Routing-System im Moment noch nicht so richtig, wenn ich mit einem Get-Request hereinkomme, On ich jetzt gerne die oder die Methode aufrufen möchte. Diese Methode möchte ich immer dann aufrufen, wenn innerhalb meiner URL eine ID übergeben wurde und zwar innerhalb es kompletten Pfades, also ungefähr sowas in der Richtung: /api/dishes/1. Und um dem Routing-System das beizubringen, benutze ich jetzt hier das HttpGet-Attribut und im Gegensatz zu dem Vorkommen hier oben, übergebe ich jetzt hier noch ein Muster für meine Route. Bedeutet also, ich sage wir haben hier eine Route nach folgendem Muster. Ich übergebe im Pfad noch eine ID. So. Und As führt jetzt dazu, wenn ich also api/dishes aufrufe, dass diese Methode hier ausgeführt wird. Rufe ich api/dishes und dann eine ID auf, dann wird diese Methode hier ausgeführt. Aktuell würde das hier noch zu einem Fehler führen, was daran liegt, dass ich in meinem DishRepository, ich öffne das mal schnell, indem ich hier Steuerung+T anwähle, und dann eingebe, ich möchte in das FileDishRepository wechseln. In diesem Repository also, dort ist die Methode GetDishById noch gar nicht implementiert. Die Implementierung an sich ist relativ simpel. Ich sage einfach, ich gebe hier zurück das Ergebnis von GetDishes. Wenn das Null ist, dann gebe ich Null zurück und ansonsten werde ich hier einfach den ersten Datensatz oder eben Null, also FirstOrDefault zurückgeben auf den das Kriterium zutrifft, dass die ID des Datensatzes gleich der übergebenen ID ist. So, über diese kleine Erweiterung des Codes ist mein Repository jetzt also dazu in der Lage mir einen Datensatz anhand seiner ID aus meiner JSON-Datei zurückzugeben. So, das Ganze probieren wir jetzt einmal aus. Ich starte also hier einmal die Anwendung und werde dann schon mal in den Postman wechseln, um Ihnen zu zeigen, wie das Ganze später ausschaut. So, hier haben wir also den Postman. Noch einmal zu Erinnerung, ich rufe api/dishes auf und lande dann in der Methode, die mir alle zurückgibt. Jetzt suche ich mir hier irgendetwas aus, zum Beispiel die Patatas bravas Dann übergebe ich die entsprechende ID. Das ist hier die sechs oben mit meiner Anfrage in der Adresszeile. Sende das Ganze und jetzt bekomme ich nur die Patatas bravas zurück. Und zwar mit einem Statuscode Http 200 OK übergebe ich jetzt eine ID, die es nicht gibt, zum Beispiel 99. Dann bekomme ich einen Http-Statuscode 404 NotFound. Und das lag eben daran, dass ich hier in meinem Quelltext des Controllers diese Fallunterscheidung habe. Ich überprüfe hier also, gibt es einen Datensatz zu dieser ID. Wenn Nein, dann gebe ich NotFound 404 zurück, ansonsten 200 und den entsprechenden Datensatz. Damit ich diese Statuscodes zurückgeben kann, ist es wichtig, dass ich hier den Rückgabetyp der Methode nicht auf die eigentliche Domainklasse, also auf Dish stelle, sondern auf IDdpActionResult. Hier oben haben wir das Ganze nicht benötigt. Schaut nämlich so aus, dass wenn ich einfach ein Objekt oder eine Liste zurückgebe, dann ist es immer der Http-Statuscode 200 und ein 404, nämlich Das haben wir in diesem Fall nie Dadurch, dass ich ja hier kein Argument übergebe, bedeutet das, ich bekomme immer die vollständige Liste. Und wenn die Leer ist, dann kriege ich halt eine leere Liste, aber kein NotFound, weil die Adresse an sich, die war ja richtig.

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!