ASP. NET Core 6 - Minimale API-Entwicklung | Trevoir Williams | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

ASP. NET Core 6 - Minimale API-Entwicklung

teacher avatar Trevoir Williams, Jamaican Software Engineer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      0:57

    • 2.

      API-Übersicht

      6:40

    • 3.

      Setup-Projekt

      4:18

    • 4.

      CORS einrichten

      4:53

    • 5.

      SQLite-Datenbank einrichten

      11:37

    • 6.

      GET-Methoden entdecken

      9:39

    • 7.

      PUT-Methode erkunden

      9:44

    • 8.

      POST-Methode erkunden

      4:00

    • 9.

      DELETE durchsuchen

      4:03

    • 10.

      API mit Swagger Doc testen

      4:14

    • 11.

      API

      0:55

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

143

Teilnehmer:innen

--

Projekte

Über diesen Kurs

Lerne mit ASP.NET Core und in der API zu erstellen. NET 6

In diesem Kurs wirst du:

Erstellen einer . NET Minimale API

  • Verstehe . NET 6
  • API verstehen
  • SQLite und Ef Core verstehen
  • Dependency verwenden
  • Swagger verstehen

Triff deine:n Kursleiter:in

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Kursleiter:in
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: Hallo und willkommen zu meinem Kurs, ASP.Net Core minimale API-Entwicklung. Ich bin Ihr Ausbilder für Krieg Williams und ich bin Softwareingenieur und Dozent und mache das seit 12 Jahren. In diesem Kurs werden wir ein Verständnis dafür bekommen, wie wir minimale APIs mit Dotnet Six entwickeln. Wir werden verstehen, Wir werden verstehen ganze API-Verben ganze Fortsetzung, Licht und Entity Framework funktionieren Core kombiniert, um uns einen Ort zum Speichern und Abrufen von Daten zu geben. Wir werden uns auch die Abhängigkeitsinjektion ansehen und ganze Swagger-Dokumente helfen uns bei der Interaktion mit unserer API. Werfen Sie diesen Kurs wird Visual Studio 2022 und Folgevorgängen für dotnet verwenden. Und Visual Studio 2022 ist erforderlich, um dotnet sechs zu verwenden. Es ist eine voll funktionsfähige und erweiterbare IDE, sehr leistungsfähig ist und es uns ermöglicht, so viel mehr für die Entwicklung zu tun . Lasst uns also ohne weiteres anfangen. 2. API-Übersicht: Hey Leute, willkommen zum Anfang dieses neuen Abschnitts, in dem wir an einer RESTful-API arbeiten werden , die unsere mobile App ergänzt. Also haben wir uns schon alle Grundlagen von Maui angeschaut. Aber jetzt wollen wir mit dem Aufbau einer echten App beginnen. Und im Allgemeinen kommunizieren mobile Apps mit APA, weshalb viele von ihnen Internetzugang benötigen. Wenn Sie jetzt nicht so vertraut sind, was eine API ist, werde ich Sie jetzt durch einige der Grundlagen führen. Und wenn Sie sich wirklich mit mehr Details befassen möchten , können Sie sich meine anderen Kurse ansehen, in denen ich Sie mit API-Design durch den Klingelton bringe . Aber für diesen Kurs wird es einfach genug sein, dass wir eine API zum Laufen bringen und sehen können, wie wir diese API über unsere mobile App konsumieren und mit ihnen interagieren können. Jetzt bauen wir eine RESTful-API auf. Und Handgelenk ist ein Akronym für Repräsentative State Transfer. Im Wesentlichen ist es ein offener Standard, der es jedem Client ermöglicht , mit einem Endpunkt zu interagieren und auf einige, die wir als IT-Ressourcen bezeichnen, zugreifen zu können Endpunkt zu interagieren und auf einige, die wir als IT-Ressourcen bezeichnen, zugreifen . Nehmen wir zum Beispiel eine Anwendung wie Facebook. Wir sind Facebook auf unserem Mobiltelefon, oder wenn es in unserem Internet ist, unsere Internetbrowser, wir haben es auf verschiedenen Geräten und wir haben Apps für Android, für iOS usw. Tatsache ist, dass jede dieser Apps nicht machbar ist und von Grund auf neu erstellt wurde. Es interagiert eigentlich nur mit einer API , die Facebook entwickelt hat und weiterentwickelt. Und deshalb bleibt, wenn Sie Updates aufrufen, was sie tun , in etwas, in der API, und sie müssen die Art und Weise aktualisieren, wie Up mit dieser API interagiert. Aber im Wesentlichen liegt die Intelligenz in der APA. Und da es sich um einen offenen Standard handelt, spielt es keine Rolle, ob es sich um ein Android-Gerät oder ein Windows-Gerät oder um Ihr Mobiltelefon oder Ihre mobile Uhr oder Ihre Smartwatch handelt. Alle von ihnen können mit diesen offenen Standard-APIs oder Webservice interagieren , der im Allgemeinen dem restlichen Architekturstil entspricht. Wenn wir über APIs und erholsame APIs sprechen, gibt es bestimmte Konzepte, mit denen wir sicherstellen möchten , dass wir uns wohl fühlen. Eine davon ist einheitlich, was bedeutet, dass es eine Standardmethode gibt Ihre URLs zu formulieren und diese Anrufe zu erfüllen. Es ist immer noch weniger. Sie stellen also im Allgemeinen nicht fest, dass Cookies und andere Dateien auf dem Gerät generiert werden , um die API zu unterstützen. Anruf wird getätigt, sobald ich das fertig nenne, es vergisst es. Es hat nichts wirklich festgehalten, oder? Es ist zwischenspeicherbar, was bedeutet, dass Sie manchmal eine Entzündung haben, die immer angefordert wird. Anstatt also in die Datenbank oder den Datenspeicher zu gehen , legen wir jedes Mal Geld ein Geld ein, damit die API schneller mit Entzündungen reagieren kann , auf die häufiger zugegriffen wird und ändert sich im Allgemeinen nicht so sehr. Es ist geschichtet. Sie haben also verschiedene Teile und Layer in der API, um zu beschränken, was auf verschiedenen Ebenen getan werden kann. Oder Ressource repräsentiert im Allgemeinen Datenbits oder ein Objekt zwischen der Datenbank und der Clientanwendung. Und im Allgemeinen möchten Sie, wenn Sie Ihre RESTful-API-Endpunkte benennen, Ihre RESTful-API-Endpunkte benennen, selbstbeschreibend sein. Wenn es also ein Endpunkt ist mit einer persönlichen Entzündung umzugehen, dann möchten Sie sicherstellen, dass Sie eine Entzündung der Person sagen. Das sind also nur Prinzipien. Als nächstes haben wir die HTTP-Methoden. Jetzt haben wir verschiedene Methoden in Form von get, put, post, delete. Dies sind die beliebtesten , die Sie sehen werden, dass sie verwendet werden. Es gibt noch andere. Aber im Allgemeinen möchten wir, wenn wir es mit einem Datenspeicher zu tun haben, für Operationen durchführen. Wir nennen das generell Crowd-Operations. Wir möchten Daten in der Datenbank erstellen, wollten die Daten in der Datenbank abrufen. Wir möchten Änderungen daran vornehmen oder aktualisieren, und wir möchten es entfernen oder löschen. Also sieh IUP. Holen Sie sich also den Abruf ab, wenn Sie den Datensatz oder eine Reihe von Datensätzen anzeigen möchten. Ich GET Anfrage setzen, put ist das U, was Update ist. Sie haben auch Patch, aber das ist ein Thema für ein anderes Mal. Machen Sie die einfachere Implementierung, damit wir hier für unsere Zwecke arbeiten. Aber wir senden PUT-Anfragen, wann immer wir eine Aktualisierung der Daten vornehmen möchten. Wir haben die Post-Anfrage wann immer wir Daten erstellen möchten. Und dann haben wir die Löschanfragen, die meiner Meinung nach selbsterklärend, wenn nicht die selbsterklärendsten sind, eine von allen, dann haben wir die HTTP-Antwort. Das waren also die Anfragen , die wir uns gerade angeschaut haben. Die Antwort ist das, was der Server zurücksendet. Also haben wir im Allgemeinen ein XX und XX bedeutet nur Zahl, Zahlen wie 100, zwischen einhundert, einhundertneunundneunzig . Die x-Achse repräsentiert alles von 00 bis 99100. Statuscodes sprechen im Allgemeinen über Kommunikation von Übertragungsprotokollen auf 100. Im Allgemeinen erreicht der Erfolg in der Operation. 300er Jahre waren, dass es eine Umleitung gab. 400 zeigt, dass es vielleicht ein schlechtes Rechenzentrum oder vom Kunden gab. Der User-Mid werden also Daten gesendet, die der Server nicht verarbeiten konnte. Und so würden wir sagen, es war schlecht, eine schlechte Anfrage oder Sie haben etwas angefordert , das nicht wie ein 404-Fehler gefunden werden konnte. Ich bin sicher, dass sich jeder mit einem Fluorophorfehler identifizieren kann. Und dann haben wir den 500-Fehler, was bedeutet, dass der Server dort ist, wo das Problem lag. Die Daten kamen herein, aber vielleicht haben Sie dieses Problem mit der Datenbankkonnektivität nicht aufgerufen oder der Server wurde fertig, dann reagierte die API mit einer 500-Antwort. Dies sind also allgemeine Antwortzitate, und es ist sehr wichtig, diese Rechte in einem guten API-Design zu erhalten. All dies, um zu sehen, dass unsere API als Interaktionspunkt zwischen unserer mobilen App und einer zentralen Datenbank dienen wird Interaktionspunkt zwischen unserer mobilen App und einer . Alles, was wir in der mobilen App tun , möchten wir, dass sie durch die API fließt , denn dort wird die wahre Intelligenz sein und genau darauf werden wir diese Reise beginnen. In diesem Abschnitt beginnen wir mit dem API-Design und wir werden die Grundlagen durchgehen und genug tun, um es zum Laufen zu bringen und es noch einmal zu verstehen, wenn Sie weitere Details wünschen, Sie kann sich den ultimativen ASP.Net Core API-Entwicklungsleitfaden für den Kurs ansehen. Sie können dies für alles überprüfen, was Sie über das richtige API-Design von Grund auf wissen müssen . In diesem Kurs halten wir es einfach. In der nächsten Lektion werden wir also unser API-Projekt einrichten und den Ball ins Rollen bringen. 3. Setup-Projekt: Alles klar Leute, willkommen zurück. Lasst uns also direkt hineinspringen. Wir werden unser Visual Studio 2022 öffnen und ein neues Projekt erstellen, aber ich möchte eine leere Lösung. Also beginne ich lieber mit einer leeren Lösung. Das ist also eher eine leere Lösung, damit ich der Lösung einen Namen geben und anschließend die Projekte hinzufügen kann. Also werden wir an einer mobilen App für den Einkaufswagen arbeiten , oder? Also Einkaufswagenliste, also werde ich nur die Warenkorbliste sagen. Das ist der Name der Lösung. So können wir weitermachen und das schaffen. Sobald wir die Lösung haben, erstelle ich ein neues Projekt. Also gehe ich einfach direkt zur Lösung, Neues Projekt hinzufügen. Und dann können wir ein API-Projekt hinzufügen. Ich suche einfach noch einmal nach API. Und dann gehe ich mit einer C-Sharp ASP.Net Core Web API. Und dann rufe ich die Punkt-API der Einkaufswagenliste auf. Dann haben wir auf Weiter geklickt. Und jetzt sind hier einige interessante Möglichkeiten für uns. Und wie gesagt, ich möchte es relativ einfach und einfach für uns halten . Erstens, wir werden jetzt dotnet Core sechs mit Visual Studio 2022 Preview verwenden , Sie können zu fünf zurückkehren, die zum Zeitpunkt dieser Aufnahme das Ende des Lebens erreicht haben, so dass Sie ich will wahrscheinlich nicht dorthin gehen. Dotnet Core Drei-Punkt-Eins hat immer noch langfristige Unterstützung, ebenso wie dotnet sechs und dotnet seven in der Vorschau. Aus Stabilitätsgründen fahre ich mit dotnet sechs fort. Und wir können einen Authentifizierungstyp eingeben. Aber im Moment wählen wir einfach keine aus, weil wir das später manuell machen werden. Wir können für HTTPS konfigurieren, wir brauchen nicht dunkler. Nun, hier wird es interessant. Wir können wählen, Controller zu verwenden, oder wir können das Häkchen deaktivieren, damit wir minimale APIs verwenden können. Traditionell würden wir immer Controller verwenden, aber ich denke, dies wäre ein guter Zeitpunkt, um zu sehen, wie die minimale API aussieht. Zumal dies wirklich eine leichtgewichtige App ist, aber sie könnte sowieso einfach bei uns wachsen. Also werde ich das Häkchen „Controller verwenden“ deaktivieren das Häkchen „Controller verwenden , damit wir minimale APIs verwenden und offene APIs unterstützen können . Und dann ist die nächste Option, die ziemlich interessant ist, ob wir Anweisungen auf oberster Ebene verwenden möchten oder nicht. Bei dotnet sechs wären Anweisungen der obersten Ebene wie die Hauptfunktion und der Haupt-Namespace und so weiter gewesen . Einige Personen hätten also gesagt sie es vorziehen, es in sechs zu sehen, und minimale Stilklassen eingeführt, bei denen Sie nicht unbedingt so explizit oben sein müssen. Sie können also wählen, welches Sie wollen. Ich werde die Anweisungen der obersten Ebene nicht verwenden , weil ich sie so mag. Und ich klicke einfach auf Create. Okay, jetzt haben wir unser API-Projekt erstellt. Wenn ich also zu program.cs gehe, beachte, dass du es gewohnt bist den Controller-Ordner in deiner API-Entwicklung zu sehen, du wirst ihn hier nicht weil wir die US-Controller deaktivieren. Wenn Sie sich für die Verwendung von Steuerelementen entschieden haben, kein Problem, sollten Sie in der Lage sein, gut zu folgen. Aber weil wir minimale APIs machen, oder ich habe die minimalen API-Vorlagen ausgewählt. Was passiert ist , dass wir sehen werden, dass alles genau hier in dieser program.cs passiert. Sobald ein Programm ausgeführt wird, baut es alle Abhängigkeiten auf, die es benötigt. Und dann geht es direkt in die Ausführung des Codes oder das Wissen, welche Codierung ausgeführt wird, und dann läuft es. Die API wird also dort sitzen und auf Anfragen warten und alles läuft ziemlich von unserer program.cs aus. Ich werde das nur ausführen, um sicherzustellen, dass es los ist und es funktioniert. Und es wird diesen Browser starten , der uns unser Swagger-Dokument zeigt. Da wir uns also für die Unterstützung offener APIs entschieden haben, haben wir automatisch Swagger in unsere API integriert. Sobald wir das ausgeführt haben, sehen wir uns die Dokumentation an. Je mehr Endpunkte-Fähigkeiten sind, desto mehr wird dieses Dokument automatisch erweitert. Das ist es also für uns zu erschaffen. Wenn wir wiederkommen, richten wir die Kursrichtlinie ein. 4. CORS einrichten: Alles klar Leute, also richten wir in dieser Lektion unsere Kursrichtlinien ein. Und ich mache das eher als eines der ersten Dinge. Wann immer wenn ich eine API erstelle, warum? Nun, die API nach Design soll von anderen Kunden konsumiert werden. Andere sind Clients, die sich möglicherweise nicht unbedingt auf demselben Server wie die APA befinden. Kein Auto ist ein allgemeiner Sicherheitsbegriff für jede App, die im Internet gehostet wird. Und im Allgemeinen würde diese Richtlinie vorschreiben, ganz unterschiedliche Ressourcen unterschiedliche Anfragen sind, die durch die angeforderte App erleichtert werden können. All das zu sehen. Die Kursrichtlinie ermöglicht es uns, Anfragen aus bestimmten Quellen abzulehnen , wenn alle Quellen eine geringe Anforderung sind. Also wenn wir das Handy woanders oder 60 Millionen mobile Apps auf der ganzen Welt und unsere APIs irgendwo auf einem Server haben. Wir müssten eine Kursrichtlinie haben, um zu sagen , ich weiß nicht, ich kann 60 Millionen Anfragen und 60 Millionen Mobiltelefone nicht verfolgen . Also erlaube ich einfach jedem, mit mir zu sprechen. Natürlich können wir weitere Sicherheit auf einer anderen Ebene hinzufügen. Aber im Moment verwenden wir nur die Kursrichtlinie, um sicherzustellen, dass wir Anfragen von mobilen Apps nachträglich erleichtern können , oder? Wir werden darauf hingehen, dass Zeilen sieben in der program.cs sind. Und wie ich schon in der letzten Lektion sagte, habe ich mich nicht dafür entschieden, die Aussagen auf oberster Ebene zu verwenden. Es kommt also einfach auf den Punkt, oder? Es startet nur den Code, weil er bereits weiß, dass es sich um die program.cs handelt, also muss er nicht int, void, programmklasse usw. deklarieren . Also keine Klasse ungültig, weißt du, was ich gesehen habe? Lassen Sie uns also darauf eingehen. Also sagen wir Builder Dots Services, Punkt, füge Autos hinzu. Genau da ist es. Und was wir hier tun werden, ist einige Optionen einzurichten , die die Konfiguration leiten. Okay, also sagten wir Optionen und verwenden dann geschweifte Klammern. Und lass mich das ein bisschen größer machen. Stellen Sie sicher, dass wir sehen können, dass wir mir etwas realistischer geben können. Es stellt sicher, dass wir alle klar sehen können , was passiert. In Ordnung, erstellen Sie also die Dots-Services , die CORS im Web oder Optionen hinzufügen. Und dann werden innerhalb unserer Optionen Optionen, Punkt, Add, Policy haben . Das ist also unsere Kursrichtlinie. Wir müssen ihm einen Namen geben. Also sage ich nur ein Tief weil ich nicht bereit bin, irgendwelche Einschränkungen zu setzen. Also ja, es wird buchstäblich Hallo alle sein. Und dann starte ich einen weiteren Lambda-Ausdruck. Sieh dir einfach ein Lambda an. Und dann ist das wie ein Builder-Funktionen, also sage ich einfach einen Punkt und dann kann ich sagen, dass jeder Header zulassen kann. Das bedeutet also jede Art von Anfrage, die hereingeht , gezogen wird usw. Obwohl es begann, sehen Sie irgendeinen Ursprung. Wo auch immer es ist, stammt, es ist, dass die Anfragen niedrig sind, und dann kann ich einen niedrigen sehen, jede Methode, tatsächlich jede Methode zulässt ist die HTTP-Methode , die in den Header kommt anders. Ich entschuldige mich, der Header ist Teil des Anforderungstextes. Und manchmal könnten bestimmte Schläger Miliz sein. Also folgen wir einfach jedem Header, Zulassen, jeder Methode usw. und los geht's. Das ist also die Richtlinie , die wir eingerichtet haben. Nein, wir müssen die Middleware lassen, also bauen wir hier unsere Dienste auf. Aber dann beginnt die Middleware hier bei der Aufwärts-Deklaration. Und er bemerkte, dass sich die Variable hier ändert, oder? Es ist, oder der Objektname ändert sich, es ist oben statt Builder-Punkte, Dienste oder was auch immer. Und was wir dann tun müssen, ist den AppBuilder wissen zu lassen , dass er Kerne verwenden sollte. Darum neige ich dazu, das darunter zu legen. Also werde ich einfach sagen, benutze Kerne. Verwenden Sie also die Cors Middleware und wenden Sie bitte die Richtlinie an, die als Low bezeichnet wurde. Alles klar, also achten Sie zu diesem Zeitpunkt auf Tippfehler, denn das ist eine magische Saite. Sie könnten also am Ende nichts debuggen, wenn Sie das Gefühl haben , diese beiden Wagen nach rechts zu verschütten. Das ist es also wirklich für die Einrichtung unserer Kursrichtlinien. Ich kann hier aufhören, weil es zu diesem Zeitpunkt keine wirklich greifbare Möglichkeit gibt, dies zu validieren. Außerhalb der Ausführung der API, versuchen Sie, sie irgendwo zu hosten und dann von einem anderen Computer aus darauf zuzugreifen. Das ist also wirklich unsere Kurspolitik. Ich habe bereits erklärt, warum wir es dafür brauchen. Wenn wir also wiederkommen, werden wir unsere API weiter aufbauen. 5. SQLite Datenbank einrichten: Hallo Leute, willkommen zurück. In dieser Episode werden wir unsere Datenbank aufbauen. der Regel möchten Sie für eine App, die für eine große Nutzung skaliert wird, natürlich für eine große Nutzung skaliert wird, eine Enterprise Grade Datenbank wie Oracle oder Microsoft SQL Server verwenden . Und dann das Flaggschiff-Objekt-Relational-Mapping-Tool oder die Bibliothek, die Dotnet Core uns die Interaktion mit der Datenbank gibt. Das Flaggschiff ist Entity Framework Core. Wissen Sie, dass es Konnektoren für viele andere Datenbanken hat, also sage ich Ihnen nicht, dass Sie die Datenbank verwenden müssen , die ich gerade verwenden werde, aber ich halte es einfach genug, aber ich werde das erklären allgemeines Konzept für Sie, damit Sie schätzen können, warum ich diese Entscheidungen treffe. Für diesen Kurs verwende ich nur eine Fortsetzungsdatenbank, die sich einfach im Ordner mit der APA befindet. In einer Unternehmensanwendung möchten Sie jedoch erneut eine Verbindung zu einem Remote-Server für eine Enterprise-Datenbank möchten Sie jedoch erneut eine Verbindung zu einem Remote-Server für wie Microsoft SQL Server herstellen. Um Entity Framework in unser Projekt zu integrieren, ich mit der rechten Maustaste auf das Projekt und gehe dann zu NuGet-Paketen. Und dann gehen wir einfach zu Browse und ich suche nach Microsoft Dot Entity Framework Core, Fortsetzung Licht. Wenn Sie noch einmal eine andere Datenbank verwenden möchten, wissen Sie vielleicht bereits, wie Sie sie an SQL Server verdrahten können. Dann suchen Sie einfach nach Microsoft, aber Entity Framework Core, und Sie würden sehen, dass die verschiedenen für SQL Server, für mein SQL usw. sterben . Im Allgemeinen ist der Name also konsistent, wo Sie sagen einfach Entity Framework , Core, Duct und den Datenbankingenieur, den Sie bevorzugen. Dann würdest du die Bibliotheken finden. Jemand zum Herunterladen. Entity Framework Core macht Fortsetzungslicht, und das wird mit ein paar zusätzlichen Bibliotheken geliefert. Lassen Sie mich also weitermachen und das herunterladen und installieren und akzeptieren Sie alles, was auftaucht. Dafür benötige ich auch eine andere Bibliothek, die Microsoft Dot Data Dot Fortsetzung Light Dot Core ist. Also kann ich weitermachen und mir das schnappen. Und das ermöglicht es mir, einige andere wichtige Operationen durchzuführen. Ich mache weiter und installiere das. Gehen wir nun zurück zu unserer program.cs und fangen dann an, dies zu verdrahten. Also führe ich einfach ein paar Konfigurationen und führe dich dann durch sie. Was wir hier machen, ist, dass wir einen Ordner einrichten. Alles klar Leute, also lasst uns zurück zu unserer program.cs springen . Und ich füge einfach ein paar Konfigurationszeilen ein und führe dich dann durch , was passiert, wenn ich den Datenbankpfad einrichte. Der Datenbankpfad geht also einfach zum Stammordner und erstellt eine Datei namens Einkaufswagen dot db. Dann entspricht die Verbindungszeichenfolge ich nur kurz einen Con nenne, , die ich nur kurz einen Con nenne, einer neuen SQL Lite-Verbindung. Natürlich müssen Sie während des Vorgangs einige fehlende Verweise einbeziehen. Also füge sie einfach so ein, wie du sie siehst. Und die Datenquelle wird gleich dem DB-Pfad sein. Und dann sagen wir Build Out Services im DB-Kontext. Und wir haben einen Einkaufswagen DB-Kontext , der eine rote Linie hat, weil er noch nicht existiert, aber setzen Sie ihn trotzdem ein. Und dann setzen wir die Option ein, dass wir Fortsetzung ITE verwenden, und das ist unsere Verbindung. Okay, damit wir diese Datei erstellen können. Ich kontrolliere nur Punkte und ich generiere das in einer neuen Datei. Dann haben wir den Warenkorb DB-Kontext. Jetzt treffe ich zuerst dieses Publikum und werde es dann vom DB-Kontext erben lassen. Sobald Sie das tun, natürlich irgendwelche fehlenden Punkte verpassen, indem Sie die Referenz entsprechend verwenden. Jetzt, da ich diese DVI-Kontexte habe, will ich unseren Konstruktor. Und dann initialisiert dieser Konstruktor unser Häkchen im DB-Kontext, DB-Kontextoptionen. Und diese Optionen würden sich selbst als Typ betrachten. Wir nennen das einfach Optionen und geben das dann an die Basis weiter, oder? Im Wesentlichen injizieren wir also die Optionen, die aus unserer program.cs kommen. Und das wären die Optionen hier, du siehst Licht. Und sie gaben es nur an die Basis weiter, die den DB-Kontext ist , den wir verwenden. Cql ITE. In Ordnung? Nein, wir brauchen wirklich nur einen Tisch. Also sage ich einfach Requisite. Und dann erstelle ich einen neuen Datentyp. Ich nenne es einfach einen Einkaufswagen. Und nennen wir das Einkaufswagen. Okay, wenn wir also eine mobile App erstellen, denken Sie darüber nach. Sie erstellen eine mobile App, die Menschen dabei hilft , beim Einkaufen zu kompilieren, was sie wollen. Das machen wir im Wesentlichen hier, oder? Später, wenn sich die App weiterentwickelt, möchten wir vielleicht eine Möglichkeit aufstellen, um herauszufinden, zu welchem Warenkorbdatensatz gehört, zu welchem Benutzer oder welcher Benutzer diese Interessen in zwei Teile hat. Aber wie gesagt, ich halte es sehr einfach. An diesem Punkt, wenn wir uns weiterentwickeln, können wir ausgefallenere Dinge einbringen. Und ich habe das an die falsche Stelle gebracht, das sollte nicht im Konstruktor sein. Ich entschuldige mich, das sollte hinter dem Konstruktor her sein. Da sind wir los. Dies ist also die Eigenschaft im EB-Kontext. Innerhalb des Framework Core muss ich in die Eigenschaften eingefügt werden. Und eigentlich sollte das DB Set vom Typ Warenkorb sein. Ich frage mich also, warum es so seltsam aussieht. So DB Satz vom Typ Einkaufswagen bekommt es keinen Einkaufswagen ist ein Datentyp, den wir benötigen. Also schaffe ich das einfach. Und ich generiere diese Klasse einfach in einer neuen Datei. Jetzt haben wir diese Einkaufswagen-Datei. Ich kann einfach F 12 drücken, wobei es ausgewählt ist und es wird zu seiner Definition springen. Nein, was hat ein Einkaufswagen? Nein, die meisten Entitäten, und ich würde sagen, dass jede Entität in Ihrer Datenbank immer mit NAD beginnen sollte. In Ordnung? Wir könnten Artikelnamen, Artikelnamen haben. Okay, da ich das richtig mache , versuche ich hier Abkürzungen zu nehmen, aber es ist, als ob meine, meine Programmiersinne kribbeln. Erstens, wenn Sie etwas in einen Warenkorb legen, geben Sie wahrscheinlich den Namen des Artikels ein. Sie würden wahrscheinlich die Menge eingeben , die Sie voraussichtlich abholen. Und vielleicht möchten Sie ein Flag setzen , um zu sehen, ob es ausgewählt ist oder nicht. Hast du es abgeholt oder nicht? Hier ist also eine Zeichenfolge für den Elementnamen. Und dann haben wir int für die Menge. Oder es könnte doppelt für die Menge sein , weil man 1,5 oder so sagen könnte. Oh nein, Sie können den entsprechenden Datentyp auswählen, also Menge und ein boolescher Wert, der besagt, dass es ist. Das sind also unsere Datentypen, oder? Wisse, dass wir den Bowl haben, den ich lief. Jetzt habe ich die grundlegende Vorlage dafür wie mein Einkaufswageneintrag aussehen wird. Es heißt, springe zurück zum DB-Kontext des Einkaufswagens. Und was ich tun werde , ist, die Methode für das Erstellen von Modellen zu überschreiben . Wenn Sie also das Wort override schreiben, werden Sie gefragt, was Sie überschreiben möchten? Und wir überschreiben eine Nicht-Modellerstellung, und dann wird es das alles für uns generieren, also brauchen wir diese erste Zeile. Dann ging ich zu einer ModelBuilder-Punkt-Entität, diesem Warenkorb. Und dann möchte ich sagen, dass das Daten hat. In diesem Fall werde ich die Datenbank mit einigen Daten besetzen , damit wir, wenn wir unsere API zur Überprüfung ausführen, Daten darin sehen, oder? So hat Daten eine Sammlung von Objekten jeglicher Art, die Sie hier angeben, benötigt eine Sammlung von Objekten . Also würde ich einfach einen neuen Einkaufswagen sagen und dann einen Ausweis geben , der abgeholt wird, wäre gleich Stürze. Und der Artikelname wäre, mal sehen, Seife und das ist eine Zeichenfolge. Und dann wäre die letzte Quantität. Und wir brauchen zum Beispiel drei Stück Seife, oder? Dann wird es einfach eine Sammlung brauchen. Wir können also einfach Komma, trennt diese Objekte so viele Objekte wie Sie möchten. Natürlich sollte jeder eine andere ID haben, da ID automatisch als Primärschlüssel in der Datenbank angesehen wird . Also lasst es uns ein bisschen verwechseln. Lasst uns das treffen. Und das würde gezüchtet und wir sollten zwei Brote holen. Und dieser kann Stürze bleiben, und dieser sollte Shampoo sein. Ich erfinde das nur, während ich weitermache, da es keine Mariel-Einkaufsliste ist. Da sind wir los. Wir haben also drei Elemente , die wir in unsere Datenbanktabelle einsetzen möchten , wenn unsere App ausgeführt wird. Und wir haben so ziemlich alles verdrahtet , um zur Laufzeit eine Datenbank zu haben , oder? Was ich tun werde, ist zu NuGet-Paketen zu gehen und ein weiteres Paket zu installieren , zumindest für null. Und dieses wäre Entity Framework Core-Dock-Tools, die uns Zugriff auf bestimmte Befehle geben, die wir ausführen können weil wir die Tabelle in der Datenbank erstellen müssen. Wir holen die Tools und installieren das. Und wenn Sie nur hinschauen, können Sie sich meinen Entity Framework Core-Kurs , wenn Sie nicht so vertraut sind mit Entity Framework Core nicht so vertraut sind. Kurz gesagt, dies ermöglicht es uns, diese Befehle auszuführen, mit denen wir eine Migration hinzufügen und sie als Switches aktualisieren können , worauf wir uns gerade konzentrieren werden. Gehen wir also zu Tools und gehen zum NuGet-Paketmanager und startete diese Konsole. Und dann sage ich Add Bindestriche Migration. Und dann sage ich einfach „Datenbank erstellen“. Und dann drücken wir Enter, lassen Sie es ein bisschen darüber nachdenken. Sobald es das getan hat, erhalten wir unsere Migrationsdatei, die ich nicht auf die Details eingehen werde, aber kurz gesagt, Tabelle erstellen und die Daten einfügen. Und wir hatten drei Rekorde eingelegt, oder? Der nächste Befehl wäre also update Bindestrichdatenbank. Wenn die Datenbank nicht existiert, wird sie erstellt und dann alle Datensätze eingefügt. An dieser Stelle sollte also unsere Datenbank existieren. Du kannst weitermachen und bauen und laufen und es einfach testen. Aber natürlich haben wir den Endpunkt noch nicht gebaut. Wenn wir also zurückkommen, erstellen wir den API-Endpunkt, der es uns ermöglicht , diese Datensätze abzufragen oder abzurufen denen wir wissen, dass sie sich in der Datenbank befinden. 6. GET entdecken: Hallo Leute, willkommen zurück. Also haben wir einfach unsere Datenbank eingerichtet, jetzt möchten wir unsere ersten Endpunkte einrichten , damit wir sehen können, was sich in der Datenbank befindet. Denn als die Datenbank zur Laufzeit bei modaler Erstellung erstellt wurde , wollten wir diese Datensätze in sehen, also sollten zumindest diese Datensätze in der Datenbank enthalten sein und alles, was wir zumindest abrufen möchten sie und sehen Sie, wie die API funktioniert. Was wir also tun werden , ist der Vorlage zu folgen , die uns gegeben wurde. Ja, es sind Wettervorhersagen und ja, die Daten sind ein statischer Wechselrichter sich nur um dieses Array handelt. Aber das Prinzip dahinter wie wir unseren Code lesen werden, ist das gleiche. Unterhalb oder Wettervorhersage direkt über dem App-Punktlauf. Was ich tun werde, ist Punkte aufzuschreiben, Mopp, hol. Okay, was passiert ist, dass Sie für alle Methoden, die Sie verwenden möchten, eine Map und dann den Methodentyp sehen können. Also wollen wir meinen PUT bekommen, meinen PUT bekommen, posten oder löschen usw., oder? Wenn wir sie durchgehen, werden Sie diese Art von Mustern sehen. Also werden wir sehen, wie Mopp kommt, und dann müssen wir ihm die Adresse geben. Um die Wettervorhersage zu erhalten, müssen Sie die Prognosen für die URL oder das Logo-Logo des Server-URLs sehen . Wir wollen die Artikel des Einkaufswagens bekommen. Wir würden sagen Schrägstrich in unserer Schnur, Slash Einkaufskarten. In Ordnung? Und was wir dann tun wollen, ist asynchron zu machen. Dann werden wir so ziemlich async und wir brauchen unsere Darstellung unserer Datenbank. Also werde ich alles zusammenbrechen, was nicht unbedingt notwendig ist. Wir können also das meiste von dem sehen, was wir sehen müssen, in einem Schuss, oder? Wir brauchen eine gewisse Darstellung unserer Datenbank. Also muss ich sehen, dass die asynchrone Datenbank ein Objekt erstellt. Ich nenne es einfach dB. Und dann erstellen wir einen Lambda-Pfeil. Und dann können wir unseren Code ziemlich schreiben. In Ordnung. Also werde ich das einfach nach unten bewegen und mit einem Semikolon enden. Und dann wird unser Funktionscode in diesem Abschnitt der Methode enthalten sein , oder? Also sage ich eine seltsame DB. Dots Einkaufswagen, College-Einkaufswagen Das ist in Ordnung. Liste. So ziemlich ich sage, wähle Stern aus diesem Tisch aus. In Ordnung? Und so ziemlich genau das wird es tun. Lassen Sie uns das überprüfen, schauen Sie sich das schön und sauber an. Wenn Sie also nicht an minimale APIs gewöhnt wären und an Controller gewöhnt sind, wissen Sie was, Da Sie eine ganze große Datei für wirklich nur diese Codezeile mit alter Methode und allem hätten wirklich nur diese Codezeile . Das ist also eine nette, prägnante Art zu sehen. Wenn Sie diesen Endpunkt erreichen, rufen Sie eine Kopie der Datenbank von unserem Service Builder ab, fragen Sie ab und geben Sie zurück, was auch immer. Dann ist das wirklich alles, was wir tun müssen. Okay, also lasst uns die Zehen testen. Ich gehe einfach weiter und renne. Okay, also lasst uns das jetzt testen. Ich gehe einfach weiter und führe das API-Projekt aus. Und sofort werden Sie feststellen, dass wir unsere neuen Endpunkte haben, oder? Also haben wir unseren GET-Endpunkt. Wir können das erweitern und wir können es sehen, ausprobieren und dann können wir es ausführen. An dieser Stelle sollte es also die Methode treffen, die in die Datenbank geht und unsere Datensätze abruft. Hervorragend, in Ordnung, also wissen wir jetzt, dass eine oder API, ja, sie läuft zu unserer Datenbank erstellt wurde und die Datensätze in drei vorhanden sind, wir können sie abrufen und mit unserer Datenbank interagieren unsere API. Bevor wir also gehen, implementiere ich einfach die andere Art von GetMethod. Also kann ich Daten abrufen, oder? In der Regel möchten Sie entweder alle Daten oder möchten einige der Daten. Und die Art und Weise, wie ich die Summe bestimmt habe, wäre etwas. Also ICH SUMME. Aber die Art und Weise, wie Sie bestimmen welche Teilmenge der Daten Sie wünschen, würde durch einen von Ihnen bereitgestellten Parameter verwendet werden , und dann führen Sie eine Abfrage basierend auf dem Parameter aus. Um Schwierigkeiten bei einer APA zu erkennen, haben Sie zwei Arten von Toren. Vor jeder anderen Art von Toren hast du den Git, der alles zurückgibt. Und dann erhalten Sie eine eindeutige Kennung, die im Allgemeinen entweder einen zurückgeben oder nichts zurückgeben sollte , wenn er nicht gefunden werden könnte, oder? Alles, was ich tun werde, ist diese Getter-Methode zu kopieren und einzufügen. Ich werde die URL ändern und werde den Schrägstrich des Einkaufswagens sehen und dann eine Vorlage mit geschweiften Klammern einlegen und ID sagen. Ich erwarte also, dass Sie, wenn Sie diesen Endpunkt aufrufen , geben Sie einen ID-Wert an, was bedeutet, dass Sie den Datensatz mit dieser ID haben möchten. Nun, in diesem In der Delegate-Kopfzeile füge ich einen Parameter hinzu, füge ich um die Erfassung der ID zu erleichtern. Also sage ich einfach int id, komma-Einkaufswagen DB-Kontext. Wir wissen, dass dies bereits vom System zur Verfügung gestellt wird. Das kommt also nicht vom Benutzer, aber wir erleichtern hier den eingehenden ID-Wert des Benutzers. Dann wird unsere Anfrage anders aussehen. Wir werden keine seltsamen Einkaufskarten sehen . Gehe zur Datenbank und finde eine Senke. Und dann gebe ich ihm einen Ausweis. Und dann kann ich das ein bisschen qualifizieren. Nein, weil es es entweder finden und zurückgeben wird oder wir es nicht finden und zurückgeben wollen . Oder wir wollen vielleicht zurückkehren, nicht angerufen. So kann ich sehen, dass der Einkaufswagen ist. Das ist also meine Art zu sehen was auch immer es hier abgerufen wurde, ein Einkaufswagen-Objekt. In Ordnung? Und ich kann einen Lambda-Ausdruck machen und ich breche einfach die Zeilen, damit es nicht so verwirrend ist. Also lass uns sehen. Ich möchte ein Ergebnis des Typs zurückgeben, okay, mit den von Ihnen angeforderten Daten, denen es sich um das Warenkorbobjekt handelt , das abgerufen wurde. Und ich bin mir sicher, ich bin mir sicher, wenn Sie hier einen Diskurs machen mit grundlegenden C-Sharp vertraut ist. Also Lambda-Ausdruck, keine Lambdas oder eine ternäre Operation. Oh mein, das tut mir leid. Ternäre Operation wäre also eine logische Operation, bei der Sie sehen, was ist die Logik, die ich beurteile? Stimmt es? Ist das falsch? Tu das. Es wurde gefunden und es ist ein Objekt vom Typ Einkaufswagen dann, okay, das geben wir zurück. Ansonsten werden Buddhist sehen Ergebnisse nicht angerufen. Und das würde das 404 geben, das wir zuvor besprochen haben. Nun, eine weitere, die ich wahrscheinlich jetzt machen möchte, während wir hier sind, ist was, wenn ich alle Gegenstände finden wollte , die schnell abgeholt wurden, richtig. Die Sache ist also, dass die Verhaftungs-APIs Ihre, Sie können es verwenden, wie Sie es erstellen können, wie Sie es so erstellen können, wie Sie wollen. Stellen Sie einfach sicher, dass Sie die Standards befolgen. Also kann ich hier eine weitere wichtige Rolle erstellen, um sie abgeholt zu sehen. Wenn sie also diesen Endpunkt aufrufen, sollen nur abgeholte Artikel zurückgegeben werden. Denn denken Sie daran, wo auch immer diese Blume Sie sehen, die abgeholt oder nicht abgeholt wird. Wenn es also abgeholt wird, sollten nur die hierher zurückkommen. Das wird alles zeigen. Und dieser wird nur einen Gegenstand zurückbringen. Okay, bis jetzt abgeholt, was ich tun werde, ist, db dot Einkaufswagen Punkt wo zu sagen. Und dann setzen wir unseren Lambda-Ausdruck und unseren Zustand ein , in dem er abgeholt wird. In Ordnung? Und weil es boolean ist, kann ich es einfach so lassen. Und dann habe ich einfach Piraterie gesagt, dass ich auflisten soll, was unsere Ausführungserklärung für oder wenn Kursaussage ist . Und das war's. Und so ziemlich wir haben gerade drei Gets Endpoints in wenigen Minuten erstellt , in wenigen Minuten. Sobald Sie also alles erreicht haben, möchten Sie nur abgeholte Gegenstände bekommen. Ich möchte nicht etwas spezifisches von Adi bekommen, also lassen Sie mich das einfach schnell ausführen, damit wir es beurteilen oder arbeiten können. Okay, also haben wir Prahler, wir haben bereits getestet, um uns auch damit zu beschäftigen. Wir wissen, dass wir mindestens einen Gegenstand haben, der abgeholt wurde, war wahr jemand, der es ausprobiert und ausführt. Und ich sollte stattdessen nicht alles zurückbekommen, ich bekomme nur den einen Gegenstand abgeholt wird , sein wahres Excellent. Und wenn ich dann eins nach Ausweis will, kann ich sehen, dass alles erledigt ist. Ich gebe nur die ID von einem an. Der Rekord, den ich bekomme Buck hat einen Ausweis, oder? Wenn ich eine ID von zehn angegeben habe, da ich weiß, dass ich nicht weiß, was ich um zehn gebeten habe, bekomme ich das für alle vier Antworten nicht gefunden. Das sind also alle Antworten funktionieren, oder? Beachten Sie, dass wir, als er erfolgreich war, einen 200 Akkord zurückbekommen haben. Okay, das ist also die O wichtige Antwort auf 100 in Ordnung. Wenn Sie also spezifisch sein möchten, können Sie Ergebnisse sehen, die in Ordnung sind. Wenn Sie so lange etwas zurückgeben, ist es automatisch eingeschaltet. Okay? Das ist es also wirklich für uns, Endpunkte zu erstellen oder zu bekommen. 7. PUT-Methode entdecken: Alles klar Leute, also machen wir in unserem Abenteuer weiter und wir werden mit der Put-Methode fortfahren, oder? Was wir bisher haben, wäre also Methoden zu bekommen, die wir abrufen können, aber was ist, wenn wir sie bearbeiten müssen? Vielleicht habe ich einen Fehler gemacht, als ich den Artikel erstellt habe, etwa so etwas, oder? Also muss ich die PUT-Methode einsetzen. Der Put nimmt also ziemlich die neuen Daten und teilt dann mit, dass die Datenbank die alten Daten durch diese neuen Daten ersetzt hat. Das ist im Wesentlichen alles , was bei Ausgaben passiert. Um unseren Endpunkt zu erreichen, sage ich nur nach oben Punkt-Map-Ports. Und wie gesagt, du wirst die Karte aktualisiert haben. Und dann die Methode, die du danach so ziemlich willst, oder? Jetzt fügen wir unser String-Muster oder unsere URL ein. Normalerweise sieht der Port genau so aus, als ob er in Bezug auf das aussieht, wie diese Vorlage aussieht. Also bekommen wir die gleiche Slash-ID des Einkaufswagens, oder? Und dann sehen wir sinken und int id. Dann nehmen wir ein Objekt des Typs , den wir aktualisieren. Mit anderen Worten, wir werden einen Warenkorbartikel aktualisieren. Das heißt, wenn Sie mir einen Datensatz senden, der in meiner Datenbank aktualisiert werden soll, müssen Sie mir natürlich den Datensatz senden, Sie ersetzen möchten. Dieser Datensatz wäre diese ID, was sind die Daten, die Sie ersetzen möchten? Im Wesentlichen ist das alles, was es ist. Also muss ich einen Parameter vom Typ Einkaufswagen, Warenkorb einlegen. Denken Sie also daran, dass die ID durch die Vorlage eintritt, aber der anzufordernde Port würde im Allgemeinen die Daten senden, die nicht im Parameter enthalten sind, ähnelt dem , was sie Teil der Anforderung, des Hauptteils, sein würde. So werden wir das in ein paar int id, Warenkorb, Einkaufswagen sehen . Und natürlich brauchen wir eine gewisse Darstellung unseres DB-Kontextes. Und das ist nur ein großer Delegierter. Und dann semikolonieren wir diese Klammer richtig. Was möchte ich jetzt machen? Das erste ist, dass ich sicherstellen möchte , dass alles, was Sie aktualisieren möchten, tatsächlich existiert. Wenn es nicht existiert, dann kann ich wirklich keinen Datensatz finden , den Sie aktualisieren möchten. Also mache ich so etwas wie das, was ich hier gemacht habe. Ich habe ein Gewicht gesehen, die Find-Methode, aber vorher muss ich es irgendwo zuweisen. Var lässt uns also sehen, dass der Datensatz gleich ist, um in Einkaufswagen zu schauen und den Datensatz mit dieser ID zu finden, oder? Und eigentlich, lass mich etwas früher zurückgehen, entferne diese Zeile. Was passiert ist , dass wir mehrere Dinge erledigen werden. Im Gegensatz zu den anderen, bei denen es Einzeiler gab, werden wir eine Reihe von Dingen haben damit unser Delegierter uns wirklich nicht einfach erlauben kann, mehrere Zeilen einzulegen. Also muss ich anstelle dieses Delegiertengremiums geschweifte Klammern einsetzen. Und das schließe ich einfach ab. Und dann kann ich innerhalb dieser geschweiften Klammern jetzt die verschiedenen Codezeilen eingeben, die ich möchte. Also hier kann ich sehen, dass der var record gleich dem db-Punkt-Einkaufswagen ist, die asynchron finden. Und dann kann ich mit dem Semikolon enden. In Ordnung? Es ist also ein anderer Kodierungsstil. Es ist ein bisschen funktioneller als prozedural, wie Sie wahrscheinlich an beides gewöhnt wären. Es ist nur eine Frage der Übung, dauerhaft zu machen. Also wollte ich sehen, ob ein Rekord ist und generell möchte ich zuerst nach dem Negativen suchen. Wenn der Datensatz also null ist und Sie nach null suchen können indem Sie das Äquivalent zu null sehen oder Sie können tatsächlich sehen, dass es null ist. Dieser würde wahrscheinlich ein bisschen besser lesen. Wenn es null ist , gebe ich einfach Ergebnisse zurück, Punkte wurden nicht gefunden. Ich konnte die Akte nicht finden du sagtest, dass du es öffnen willst? Nein. Wenn es über diesen Teil hinausgeht, werden wir dieses Update durchführen wollen. Also ging ich los, um einen Rekordpunkt zu sehen, und dann muss ich pinkeln und legal bleiben bei jeder Methode tut mir leid, jede Immobilie, die hereinkam und nicht dabei ist. Also notieren Sie hier , was in der Datenbank ist. Warenkorb stellt hier die Daten des eingehenden Einkaufswagens, die Nutzlast, den Anforderungstext mit den neuen Daten dar. Ich weiß nicht, ob du den Namen änderst. Ich weiß nicht, was ich ändern soll. Also um nach dem Update alles auf der sicheren Seite zu sein. Wenn Sie also an SQL gewöhnt sind und Anweisungen in SQL aktualisieren, wissen Sie, dass Sie jede einzelne Sache in einer SQL-Anweisung ändern müssen , nur um sicher zu sein, oder? Also ist es abgeholt, wird abgeholt. Was hatten wir sonst noch? Wir hatten Quantität. Ich glaube nicht, dass wir irgendetwas haben , das global ist. Id kann nicht aktualisiert werden. Okay, wir würden die Datensatzkennung aktualisieren wollen . Nachdem wir all diese Änderungen vorgenommen haben, möchten wir warten db dot save ändert eine Senke, dann können wir zurückkehren. Wann immer wir also eine HTTP-Anfrage stellen, die nicht unbedingt etwas zurückgeben muss, sehen wir keinen Inhalt. Also ist es Solons Kumpel. Ich komme nicht zurück. Okay, aber nach dem Update-Vorgang muss ich Ihnen die Daten, die Sie mir einfach geben, nicht wirklich zurückgeben , weil Sie sie bereits haben. Also würde ich keinen Inhalt sagen, was so ziemlich bedeutet, dass ich nichts zurückgeben kann. Aber das ist ein Werkzeug für, da sind wir los. Es heißt also im Grunde, dass ich nichts zu dir zurückgeben kann, aber deine Operation war gut. An diesem Punkt ist alles gut zu gehen, oder? Lassen Sie uns also unsere Operation testen. Also werde ich einfach laufen, ohne zu debuggen. Und Swagger ist mit der Farbcodierung auf dem Ball, also wird es blau und dann haben wir Orange gesetzt. Ich kann es ausprobieren. Niemand. Ich sehe dich in der ID geht in den Parameter. Ich habe auch gesehen, dass der Rest der Daten in den Anforderungstext fließt. Also hier sage ich, dass ich den Datensatz mit der ID1 aktualisieren möchte . Und welche Daten möchte ich dann übermitteln? Das sind also riskante Dinge. Und in meinem vollständigen End-to-End-API-Kurs weise ich auf die Gefahren hin, wenn bestimmte Felder im Leben PUT- und Post-Endpoints aufgedeckt werden. Du kannst diesen Kurs durchlaufen. Aber ich halte es hier noch einmal einfach, oder? Aber normalerweise möchten Sie diesen ID-Wert verwenden oder Sie können den Code so schreiben , wie wir es getan haben um keinen Doppelpunkt für den inhaftierten ID-Wert zu erhalten. Sagen wir also, ich ändere diese Werte, oder? Nehmen Sie also mit der ID1 auf, schauen wir uns das an. Nein. Wenn ich also zum Get gehe, probiere es aus und sag Zeig mir Rekord mit der ID1. Es wird mir ID1-Artikel-Seife zeigen. Zahl drei großes Top ist also falsch. Ich werde in diesem Anforderungstext nichts ändern. Dieser Anforderungstext stellt dieselben Felder und entsprechenden Werte dar , die für unseren Einkaufswageneintrag erwarten würden . Wenn ich also Ausführen drücke, passiert es, dass es für alle vier erfolgreich war. Und wenn ich zurückgehe und diesen Datensatz mit ID1 abrufe, führe ich das einfach noch einmal aus. Jetzt werden wir sehen, dass es genauso aussieht wie das was wir gerade als Anfragetext geschickt haben. Also wenn ich das ändern will, um zu summen und zehn Häuser abzuholen, oder? Führt aus. Alles was es tut ist alles hier zu nehmen. Und die Idee ist, dass es nur das ersetzen wird, was sich in der Datenbank befindet. Da sind wir los. Okay, also ein paar Dinge darüber, was Entity Framework getan hat. Erstens, wenn wir unsere Aufzeichnungen abrufen, rufen wir sie tatsächlich ab. Und es gibt diese Funktion namens Trucking, die in einem solchen Abruf mit Trucking aktiviert ist . Alle Änderungen, die Sie an einer der Eigenschaften vornehmen , sind die Werte. Sie können einfach „Änderungen speichern“ aufrufen. Und es wird automatisch wissen, dass dies geändert wurde , weil er die Werte verfolgt hat. Sobald diese Zeile ausgeführt wird, weiß sie, dass dieser Datensatz kein Zitat ohne Zitat verschmutzt ist. Wenn Sie also sehen, ob GnG sich diesen Datensatz anschaut und die vorgenommenen Änderungen ausführt, passiert das so ziemlich, oder? Es gibt andere Möglichkeiten , da Sie Daten ohne Tracking abrufen können . Was passiert , ist , dass Sie, wenn Sie Hunderte von Datensätzen haben wahrscheinlich nicht nachverfolgen möchten, da dies Leistungsproblemen führen kann. Sie würden also sehen, dass Personen ihre Anfragen mehr verfolgen. Dies ist jedoch in der Regel eher für Anwendungen, die diesen Status erreichen. Bisher gibt es eine API keine wirklich, es gibt keinen wirklich Status, der abgerufen wird. Und das ist nur ein lehrbarer Moment. Ich helfe Ihnen nur zu verstehen, was Tracking ist und warum das einfach so funktionieren konnte, ohne dass wir db dot update anrufen. In Ordnung. Das ist also so ziemlich genau für uns, die Ausgabe zusammenzustellen. Sie können sich also alle Ausgaben vorstellen , die Sie möglicherweise einrichten möchten. Aber für nein, das ist gut genug. 8. POST-Methode: Unser Mann. Schauen wir uns also an, unsere Post-Methode zu erstellen. Um das einfach und schnell zu machen, kopiere ich einfach die Puts-Methode und füge sie erneut ein. Und wir werden einen Mop-Pfosten sehen, Post. Dieser Endpunkt ist nicht bereit, einen Parameter darauf zu haben. Es wird also nur ein Slash-Einkaufswagen sein. Und dann nehmen wir dieses Spirometer und warten nur auf die Nutzlast im Anfragetext, oder? Damit wir erwarten, dass dieses Warenkorbobjekt zwei Editor-Datenbank in Bezug auf den Code erhalten wird , müssen wir keine Überprüfungen durchführen. Alles, was wir tun müssen, ist diesen Warenkorbartikel in die Datenbank zu legen. Ich sage nur db dot Einkaufswagen. Oder ich könnte eigentlich einfach db dot ungerade sagen. Und dann geben wir ihm einfach das Einkaufswagen-Objekt. Und dann speichern wir Änderungen. Was wir dann zurückgeben werden, wäre eine Created Response. Also kreiert hätte ein Tool eins, oder? Tool eins ist der Statuscode. So erschaffen. Du könntest auch etwas mehr sagen wie es für eine Route erstellt wurde. Du kannst mir also den Root-Namen und ein paar andere ausgefallene Sachen geben. Aber ich halte es einfach, erstellt. Und dann geben wir ihm einfach ein paar Daten zurück. Es weiß also, dass es im Slash-Einkaufswagen erstellt wurde. Die Antwort wird also den Endpunkt-Schrägstrich und dann die ID haben . Im Grunde sehen wir, wenn Sie Einkaufswagen mit der Punkt-ID des Einkaufswagens schneiden , dann können Sie diese Methode finden, diese Daten finden, Entschuldigung. Dann geben wir das eigentliche Objekt zurück. Im Wesentlichen erstellt und wir sagen ihm die Zeichenfolge, wohin es gehen kann, um die erstellten Daten zu sehen. Und dann ist das die tatsächliche Datennutzlast neben der Route , zu der Sie gehen könnten. Und das ist es im Wesentlichen. Also lasst uns das alte testen. Farbcodierung ist also , dass wir wieder unsere Post-Methode hier haben. Probiere es aus. Oh, und ich sollte keine Idee geben, wenn ich kreiere, aber wir haben bereits darüber gesprochen, dass wir die Dinge hier vorerst einfach halten. Versuchen wir es mit einem anderen Gegenstand. Dieses Mal. Ich will Müsli und ich will zwei Kisten Müsli. Und es wurde noch nicht abgeholt. Wenn wir dies ausführen, stellt das unsere Objekte dar, die dann an die Datenbank gesendet wurden und C erstellt wird, erhält es die ID für und alles ist da. Wenn ich also ein Get all mache und ausführe, dann sehe ich 123 und unseren neu erstellten Artikel, Punkt vier. Und das ist es wirklich für alle Post-Methode. Also warteten wir noch einmal auf die Nutzlast, die dann bekam, was dazu führen wird dieses Objekt entserialisiert wurde. Und dann haben wir es der Datenbank hinzugefügt und dann speichern wir Änderungen. Was Sie also mit Entity Framework Core sehen würden , ist, dass Sie tatsächlich sagen könnten, dass db dot add und add einen Typ benötigt. Es weiß nicht wirklich, welcher Typ versucht werden könnte. Aber solange es außerhalb der Entität ist oder solange es es im DB-Kontext findet und Sie keine Probleme bekommen. Sie würden auch db dot und dann die spezifische Tabelle und dann diese Anzeige sehen , oder? Also zeige ich dir nur, dass du entweder einen wirklich db-Punkt in den Warenkorb legen kannst. Und dann weiß es, dass Sie einfach die Änderungen speichern und es wird die entsprechende Tabelle finden, um die Daten einzufügen. Und wir haben gesehen, dass das funktioniert. Das war's also für unsere Post-Methode. 9. LÖSCHTE Methode entdecken: Wir sind zurück und dieses Mal werden wir uns die Delete-Methode ansehen. Also werden wir die Karten-Löschung durchführen. Noch einmal nehme ich unseren PUT und dann werden wir einfach nachgerüstet, um Delete zu sein. In Ordnung? Ich bin mir sicher, dass Sie wissen, was es ist, aber ich weiß, dass es keine Rolle spielt, in der Sie die Methoden einsetzen. Es ist nicht gefälscht gelaufen, welcher zuerst ausgeführt wird sic auf unserem dritten weil es egal ist Es geht nicht die chronologische Reihenfolge oder die Reihenfolge der Methode ist genau die, welche angefordert wird Bei welcher 0.1 Sache sollte ich darauf hinweisen, dass Sie niemals zwei der gleichen Methoden mit demselben Endpunkt haben sollten . Also lasst uns zurück zum Guten gehen. Wir haben mehrere Gets, aber beachten Sie, dass jeder eine andere Endpunktadresse hat , oder? Wenn ich also Methoden mit denselben Slash-Einkaufswagen bekommen müsste , würde das ein Problem verursachen. Aber weil ich einen Nmap-Posts abgebildet habe, wo ist es, um es richtig zu bekommen? Mein Beitrag. Und beide, wie Slash Einkaufswagen, es verursacht keinen Absturz, weil man weiterkommt, einer ist Post. Wenn ich also vergessen habe, dies zu ändern und füge die beiden Map Puts mit demselben Endpunktwert hinzu. Es würde nur ein Problem verursachen. Schauen wir uns das tatsächlich an. Es ist gut, diese Fehler zu sehen, damit wir wissen, was wir diagnostizieren, wenn wir mit diesen Herausforderungen konfrontiert sind. Wenn Sie das tun und Ihre Lasten lösen, wird es Ihnen nur sagen, dass Sie es hassen, nicht zu laden, keine Daten mehr als das gibt. Wenn du so etwas bekommst, geh zurück und überprüfe und vergewissere dich, dass du diesen Fehler nicht machst. Eine einfache Lösung hier ist es, map, delete zu sagen. Und es muss denselben Endpunkt beibehalten , weil wir einen Einkaufsleitfaden wünschen. Ich brauche die ID dessen, was wir löschen werden, was wir jedoch nicht benötigen, sind die Daten, die wir löschen werden, da wir die ID immer verwenden können, um den Datensatz zu finden. Also hier kriegen wir den Rekord. Wenn es nicht gefunden wird, kehren wir zurück nicht gefunden. Und was ich dann tun werde , ist einfach db dot zu sagen. Es wäre db-Punkt entfernen. Da sind wir los. Manchmal vergesse ich diese Dinge. Also db dot remove und wir würden den Datensatz entfernen , den wir mit dieser ID gefunden haben. Wir speichern Änderungen, also drücke ich einfach Speichern. Und was passiert ist, dass es in Visual Studio 2022 eine Funktion namens Hot Reload gibt. Das ist also der Feuerball hier. Sie können also tatsächlich aktivieren, dass beim Speichern automatisch ein Hot Reload durchgeführt wird. Es könnte dich dazu veranlassen, als würde es mich auffordern. Aber du kannst immer einfach auf „Hot Reload“ tippen. Wenn er es dann nicht einfach neu laden kann, können Sie einfach Rebuild sagen und Änderungen anwenden. Und es wird tun, was es im Hintergrund tun muss , während Sie noch ohne Debuggen laufen. Und wenn Sie ohne Debuggen laufen, dieses Konsolenfenster geöffnet. Manchmal probierst du vielleicht etwas aus, ich arbeite einfach nicht richtig. Sucht einfach nach dem Konsolenfenster. Möglicherweise müssen Sie es schließen und dann von vorne anfangen. So oder so, Hot Reload ermöglicht es uns, unser Swagger-Dokument einfach neu zu laden. Ich weiß, dass wir den Endpunkt richtig sehen oder löschen. Wenn ich es dann ausprobiere und dann versuche, einen Datensatz mit der ID zu löschen einen Datensatz mit der ID , für den wir gerade erstellt haben. Und das führen wir aus. Wir sehen, dass wir alle Inhalte zurückgeben. Löschen ist also ein weiterer Endpunkt, für den Sie keinen Inhalt zurückgeben können, oder? Es ist vollkommen in Ordnung. Im Konsolenfenster, während wir uns im Entwicklungsmodus befinden, würden Sie sehen, dass diese Abfragen in der Konsole ausgespuckt werden . Und das könnte für Sie nützlich sein, um zu sehen, was generiert wird, wenn Sie diese EF Core-Befehle mit dem rechten Fuß ausführen, obwohl wir uns nicht unbedingt darauf konzentrieren müssen. Und an dieser Stelle haben wir unsere Crowd-API in Betrieb. Wenn wir jetzt wiederkommen, bereinigen wir einfach unseren Code und lassen diesen etwas vorzeigbarer aussehen. 10. API mit Swagger Doc: Okay, also lasst uns wieder dran sein und lassen Sie uns das ausprobieren. Also werde ich einfach laufen, ohne diese ein bisschen schneller zu debuggen. Und wir werden nur das Swagger-Tool verwenden , um diese API zu testen. Und jetzt wäre eine Alternative zu Swagger wie ein Postbote oder ähnliches gewesen . Aber Saga ist fähig, also benutzen wir sie jetzt einfach. Wenn wir also unser Get erweitern, bedeutet das, dass wir wieder aufstehen werden. Sammlung wird die Probe angezeigt, das Beispielobjekt dessen, was wir zurückbekommen werden. Und beachte die quadratischen Klammern, die zeigen, dass es sich um eine Reihe von Objekten handeln wird. Nehmen wir es aus, probieren es aus und führen aus, welchen Punkt es tatsächlich bei Abfragen der Datenbank geht, und es gibt alle Beispielautos, die wir eingegeben hätten, richtig? Wenn ich nun versucht habe, nach einem Ausweis zu kommen, lass mich das versuchen. Also versuch es alles. Es heißt, gib mir die Idee, ich gebe es zehn. Und wir bekommen die 200-Antwort mit dem Auto mit der ID zehn zurück . Ich versuche es mit einer 100. Ich habe keine 100 Autos. Diesmal kaufe ich das für alle vier, weil es das Auto nicht finden konnte. Schlechte Idee, oder? Sie können darauf achten, die Antwort-URLs zu leiten. Nämlich die, das nennen wir die Basis-URL , weil das der Server ist. Und dann wäre dies der Weg, und dann wird unser ID-Wert sein, oder? Es ist also gut, auf diese Dinge zu achten denn wenn wir Code schreiben, um mit der API zu interagieren, müssen wir diese Art von URLs nachahmen , damit überprüft wird, dass alles nach ID funktioniert. Versuchen wir es mit dem Pulitzer. Wenn ich versucht habe, Auto mit ID1 zu modifizieren, machen wir es in eine Zeichenfolge, String, String, String, String. Lassen Sie mich also zuerst das Auto mit der ID1 abrufen , damit wir sehen können, wie es aussah. Das ist also das Auto mit dem Ausweis und wir nehmen unser schnelles Exemplar davon. Es ist ein Honda Fit, Vinnys ABC. Wenn ich das jetzt ausführe, merke ich, dass ich alle Details eingeben und dazu neigen würde , die Breite zu aktualisieren. Wenn ich also die Standardeinstellungen belasse und auf Ausführen klicke, wird mir kein Inhalt mitgeteilt, was bedeutet, dass er erfolgreich war. Wenn ich versuche, dieses Auto wieder zu holen , werde ich sehen , dass es nicht funktioniert. Lasst uns die Schnur einstellen. Und mein Kumpel. Das ist, das sind meine dummen Fehler. Also habe ich tatsächlich die Aufgaben durcheinander gebracht, die ich hätte zuweisen sollen. Notieren Sie, dass der Wert durch das Auto hereinkommt. Dafür entschuldige ich mich also. Macht es wieder gut, dass ich mein heißes Reload auf Save habe, also sollte ich einfach zurückgehen und es erneut versuchen können. Das sind also Executes. Wir treffen uns mit einem Honda Fit und so. Und als ich dann versucht habe, hier auszuführen, bekomme ich das Tool für. Also nein, ich sehe, da sind wir los. Jetzt sehen wir also, dass sich alles in eine Zeichenfolge geändert hat. Mein alberner Fehler Leute. Das funktioniert also. Und deswegen ist das Testen wichtig. Okay, also lass mich einfach zu meiner ursprünglichen Nutzlast zurückkehren und dann erneut ausführen. Und dann können wir überprüfen, ob wir jetzt die Originaldaten sehen, richtig, gut aussehen. Dann ist das letzte der Löschvorgang. Welches möchte ich also löschen? Lassen Sie uns immer noch das Ich bin nicht Ich will nicht sehen, welche Art von Auto ich nicht mag. Was ich löschen werde. Das, das ich in dieser Liste am wenigsten mag , wäre das Auto mit dem Ausweis vier. Es wird zu klein für meinen Geschmack sein. Dort bekommen wir das Tool, das darauf hindeutet, dass es erfolgreich abgeschlossen wurde. Wenn ich also zurückgehe und hinführe, gibt es kein Auto mehr mit den IED vier. Einfach so funktioniert unser Code. 11. API: Alles klar Leute, also das letzte Hören hat uns unsere funktionierende API hinterlassen , die grundlegende Crud-Operationen durchführt. Was wir nicht wollen, ist der Zugangscode. Wir wollen die prognostizierten Zitate nicht. Ich bin gegangen, um das zu entfernen. Ich werde Record auch unten entfernen. Und im Moment haben wir nur den Code, von dem wir wissen, dass wir unbedingt brauchen. Wissen Sie, dass es verschiedene Möglichkeiten gibt, Ihre minimale API zu organisieren, da Sie Methoden erstellen können Ihre minimale API zu organisieren, da Sie Methoden erstellen können , für die Sie den Code behindern. Du könntest es in eine andere Klasse legen und es dann als Middleware nennen. Es gibt eine Reihe von Möglichkeiten, dies zu tun. Ich werde mich wirklich nicht auf all diese Weise einlassen , oder? Nein. Aber zumindest am Ende dieser Übung wissen Sie, wie Sie eine API mit dem minimalen Codierungsstil erstellen , der eine Crowd gegen die Datenbank ausführen kann .