Microsoft Azure Funktionen Grundlagen | Trevoir Williams | Skillshare
Suchen

Playback-Geschwindigkeit


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

Microsoft Azure Funktionen Grundlagen

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

      1:47

    • 2.

      Einführung in Azure-Funktionen

      0:40

    • 3.

      Erstellen einer Function

      9:10

    • 4.

      Auslöser und Bindungen

      5:23

    • 5.

      Entwicklungstools

      4:40

    • 6.

      Section - Azure Funktion Einführung

      1:29

    • 7.

      Azure-Funktionen im Azure

      0:45

    • 8.

      HTTP-Request ausgelöst Funktion erstellen

      10:31

    • 9.

      Timer ausgelöst Funktion erstellen

      2:57

    • 10.

      Erstellen einer Blob ausgelösten Funktion

      3:53

    • 11.

      Section - Verschiedene Azure-Funktionen

      3:47

    • 12.

      Azure-Funktionen in Visual Studio

      0:50

    • 13.

      Erstellen einer Function

      3:38

    • 14.

      Testfunktion in Visual Studio

      6:04

    • 15.

      Section - Funktionen in Visual Studio

      1:06

    • 16.

      Verwendung der Azure

      6:50

    • 17.

      Visual Studio Code verwenden

      8:07

    • 18.

      Section - Azure-Funktionen in Visual Studio Code

      1:00

    • 19.

      Azure Function Bindungen und Durable (Orchestrator) Funktionen

      0:41

    • 20.

      Eingabe- und Output

      23:09

    • 21.

      Dauerhafte Funktionen und Orchestration

      11:07

    • 22.

      Serverless REST-API mit Azure-Funktionen erstellen

      2:15

    • 23.

      API einrichten

      7:43

    • 24.

      POST (Erstellen) HTTP Azure Funktion einrichten

      4:46

    • 25.

      Setup GET HTTP Azure Funktionen

      4:53

    • 26.

      Setup PUT (Update) HTTP Azure Funktion

      3:11

    • 27.

      Setup Funktion DELETE

      1:20

    • 28.

      Azure Funktionen mit PostMan testen

      4:57

    • 29.

      Testfunktionen mit Benutzeroberfläche

      12:01

    • 30.

      Interagieren mit CosmosDB

      29:41

    • 31.

      Updates Zur Benutzeroberfläche

      4:09

    • 32.

      Section - REST-API erstellen

      4:19

    • 33.

      Bereitstellung der Azure Function

      0:25

    • 34.

      Azure-Funktionen veröffentlichen

      13:21

    • 35.

      Bereitstellen und Testen der Blazor

      6:41

    • 36.

      Sicherheit einrichten

      8:40

    • 37.

      Section - Azure Function App veröffentlichen

      1:02

    • 38.

      Schlussbemerkung

      2:01

  • --
  • 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.

110

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Azure Functions ist eine der schnellsten und einfachsten Weg, um deinen Code in Azure laufen zu lassen und gleichzeitig ein kosteneffizientes und serverloses Modell zu erhalten.

In diesem Kurs Microsoft Azure Functions - Entwicklung serverloser Lösungen erfahren Sie, wie Sie eigene Azure Functions Apps erstellen und visualisieren, wie vollständige Anwendungen mit dem leistungsstarken und dennoch einfachen Modell der Azure Functions erstellt werden können. Wir werden die Tools untersuchen, die zur lokalen und im Azure Portal benötigt werden, um die Entwicklung zu unterstützen, und die verschiedenen Auslöser, Bindungen und Bereitstellungsmodelle erkunden, die möglich sind.

Unterwegs lernst du, wie du Folgendes ist:

  • Azure-Funktionen verstehen Hosting

  • C#, TypeScript und andere Sprachoptionen für Azure-Funktionen

  • Azure-Funktionen erstellen und verwalten

    • Azure Portal verwenden - Webbasiert

    • Kernwerkzeuge der Azure Funktionen (Cross verwenden

    • Visual Studio Code (Cross-Platform) verwenden

    • Visual Studio verwenden (2019/2022)

  • Bindungen und Auslöser verstehen

  • Azure CosmosDB mit Azure-Funktionen verwenden

  • Azure-Funktionen auf Leistung und mögliche Fehler mit Application Insights überwachen

  • Azure-Funktionen App bereitstellen

  • Clientanwendung für die Interaktion mit Azure-Funktionen erstellen

  • Sicherheits- und Proxyeinstellungen für bereitgestellte Azure-Funktionen erforschen

Am Ende dieses Kurses solltest du ein grundlegendes Verständnis dafür haben, was Microsoft Azure Funktionen sind, wie sie verwendet werden können und wie sie mit anderen Diensten interagieren können. Dieser Kurs richtet sich an die für die Prüfung AZ-204 erforderliche Schulung: Entwickeln von Lösungen für die Prüfung von Microsoft Azure aus, obwohl es kein offizieller training ist. Es ist perfekt für dich, wenn du genug über die Entwicklung mit Azure-Funktionen wissen möchtest, um in deinem Arbeitsbereich funktionell zu sein, ohne die Prüfung zu nehmen.

Triff deine:n Kursleiter:in

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Kursleiter:in
Level: All Levels

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, Microsoft Azure Functions entwickelt serverlose Lösungen. Ich bin Ihr Ausbilder für Krieg Williams und ich bin seit dem letzten Jahrzehnt Softwareingenieur, Vortrag und Code-Praktiker . In diesem Kurs konzentrieren wir uns auf Azure-Funktionen und ihre Funktionsweise. Wir haben uns angeschaut, wie wir sie erstellen, testen und bereitstellen können. Wir haben uns die verschiedenen Funktionsauslösertypen angeschaut und ganze Wochenende MY interagieren mit externen Diensten, auch von Azure bereitgestellt werden, und andernfalls alle diese Konzepte durchlaufen werden wir alle diese Konzepte durchlaufen. interagieren Sie mit verschiedenen Entwicklungswerkzeugen, alle darauf ausgerichtet sind, uns dabei zu helfen, so produktiv wie möglich zu sein. Tools wie Visual Studio, Visual Studio-Code als 0 Funktionen, Kern-Tools. Wir haben uns den Speicher-Emulator und den Kosmos-DB-Emulator angeschaut . Wissen Sie, dass Sie wahrscheinlich etwas verschwommen sind, was Azure-Funktionen sind. Ihr Telefon meidet eine der schnellsten und einfachsten Möglichkeiten, Ihren Code in Azure zum Laufen zu bringen und gleichzeitig ein kostengünstiges und serverloses Modell beizubehalten . Mit anderen Worten, Sie können eine Anwendung schreiben, ohne sich um die Infrastruktur oder Server oder irgendetwas kümmern zu müssen . Und er kann es in der Cloud bereitstellen und innerhalb weniger Minuten etwas einsatzbereit haben . Es unterstützt auch viele Sprachen. Obwohl wir uns auf dotnet und C-Sharp konzentrieren werden, können Sie auch JavaScript, TypeScript, Python, Java und andere Sprachen sofort verwenden . Jetzt konzentrieren wir uns während des Kurses auf Ihre Funktionen, aber wir werden mit anderen Azure-Technologien wie Azure Storage, azure AD, azure Cosmos DB, Application Insights und App interagieren wie Azure Storage, azure AD, azure dienstleistungen. Lassen Sie mich noch einmal sagen, wie aufgeregt ich bin, Sie in diesem Kurs zu haben , und ich kann es kaum erwarten, loszulegen. Wir sehen uns bald. 2. Einführung in die Azure-Funktionen: In diesem Abschnitt werden wir einige der Geheimnisse entmystifizieren , die die Konzepte von Azure Function umgeben . Erstens gehe ich davon aus, dass Sie bereits einen aktiven As-Ära-Kegel haben und dass Sie genug Credits haben , um die Aktivitäten im Zusammenhang mit diesem Kurs zu durchstehen . Einige der Dinge werden Geld kosten, aber wir sind noch nicht am Geldkostenteil. Ich möchte nur, dass wir uns mit Azure Portal vertraut machen , wie wir mit Funktionen und einigen der Konzepte und Keywords rund um ihre Abläufe interagieren können. Also bleib hier. Wir werden genau verstehen, was eine 0-Funktionen sind, und schauen uns die verschiedenen Möglichkeiten an, wie sie verwendet werden können. 3. Erstelle eine Function: Okay, also lasst uns gleich eine 0-Funktionen verstehen. Jetzt mache ich an dieser Stelle ein paar Annahmen. Erstens, dass Sie bereits einen aktiven Microsoft Azure-Kegel haben und Ihre Kreditkarte eingerichtet haben oder Sie die kostenlosen Credits als einige der Aktivitäten für die Dauer dieses Programms zur Verfügung haben die kostenlosen Credits als einige der Aktivitäten für die Dauer dieses Programms zur Verfügung der Aktivitäten für die Dauer wird natürlich etwas Geld kosten. Aber wir sind noch nicht wirklich beim Geldverdienen oder beim Geldausgabenteil. Darum schauen wir uns nur die grundlegenden Konzepte an. Ich bin bereits bei meinem Azure-Konto angemeldet. Sie können zum Azure-Portal gelangen indem Sie zu portal.azure.com gehen und sich mit dem Konto anmelden, mit dem Sie Ihr Konto erstellt haben. Und dann siehst du ein Dashboard. Es mag so aussehen oder auch nicht, als hätte meins tatsächlich etwas Zeit und Mühe investiert, um diesen anzupassen. Sie sehen hier habe ich einige Ressourcen , die von einem anderen Kurs bereitgestellt werden. Und Sie werden sehen, dass Sie dies anpassen können. Sie können jederzeit zu Neues Dashboard oder zu einem leeren Dashboard gehen, oder Sie können dieses einfach bearbeiten und alle unsere eigenen verschieben und sie nach Ihren Wünschen anpassen. Nein, wir werden zu den Funktionen nach oben oder zumindest zur Serviceliste springen den Funktionen nach oben oder zumindest und eine Funktion einer Funktion auf israelischen und App-Dienst erstellen . Sie hätten also gesehen, dass das Schlüsselwort serverless angekündigt wurde, wenn Sie eine 0-Funktionen sehen. Es ist serverlos, da kein physischer Server beteiligt ist. Es ist ein Service, der angeboten wird , mit dem wir Funktionen hosten können. Also kann ich hier einfach zu All Services gehen. Dann kann ich filtern und Funktion sagen. Und dann werde ich von hier aus sehen, dass ich eine Funktion erstellen kann. Wenn ich das mache, kann ich auf Create, Create Function klicken. Um fortzufahren, gehe ich durch einen Assistenten. Also erstens, was sind Ihre Abonnements? Wenn Sie also unterschiedliche Abonnements haben, stehen Sie wahrscheinlich vor Gericht. Sie sind wahrscheinlich auf Pay-as-you-go-Dev Slash-Tests wie ich. Sie befinden sich wahrscheinlich auf einem speziellen für Ihr Unternehmen oder für Ihre Organisation, unabhängig davon, dass Sie das auswählen , das Sie verwenden werden. Ich hab nur einen. Sie möchten eine neue Ressourcengruppe erstellen. So kannst du fortfahren und auf „Neu erstellen“ klicken. Und ich sehe Funktion, RG, Funktionsstrich, Dash RG. Klicken Sie auf. Okay. Was soll diese Funktion benannt sein? Ich werde mich mit dem Kurs benennen, der Azure, Funktionen, Dash-Grundlagen ist , wissen, wann Sie das tun, wie Sie sehen können, wird es tatsächlich eine öffentliche Adresse sein. Was Sie also tun können , um es individueller zu gestalten , falls dies nicht verfügbar ist. Sie können auch Dash und Ihre Initialen oder Ihren Namen oder einen Teil Ihres Namens setzen Ihren Namen oder einen Teil Ihres Namens nur um es ein bisschen einzigartiger zu machen. Dies wird auf einer öffentlichen, öffentlich zugänglichen URL erfolgen, die es uns ermöglicht , zu den Funktionen zu navigieren, die bereitgestellt werden , um von überall auf die Funktionen zuzugreifen, die im zentralen Bereich bereitgestellt werden auf der Welt. Ich bin sicher, dass wir alle wissen, wie URLs geschrieben funktionieren. Okay, also als nächstes wollen wir veröffentlicht sagen, wollen wir vorerst Code oder einen Docker-Container, ich gehe mit Code. Welchen Laufzeit-Stack wollen wir? Eine 0-Funktion unterstützt viele verschiedene Sprachen. Wir sehen, dass es Unterstützung für das Dotnet-Framework oder die Plattform hat. Wir können NodeJS, Python, Java, Polar, Show, Custom verwenden, und es werden andere Sprachen hinzugefügt. Sehr Unregelmäßigkeit für diesen Kurs werden wir uns auf dotnet konzentrieren. Also wählen wir das aus, dann wählen wir die Version aus. Dotnet 60 ist der neueste und beste. Also werden wir damit fortfahren. Zu der Zeit, als wir diesen Kurs gemacht haben, haben sie möglicherweise eine spätere Version. Sie können das auch nutzen. Wenn Sie nicht bis zu dotnet sechs sind, können Sie auch wählen, dass dotnet Core 3.1 erforderlich ist wenn Sie zum Zeitpunkt dieses Kurses kein Visual Studio 2022 oder höher haben . Das ist in Ordnung, aber ich werde es sein zeigt mit fertig um sechs Uhr. Und dann wäre Ihr Grund das Rechenzentrum, das Ihrem geografischen Standort am nächsten ist. Wenn Sie in Australien sind, möchten Sie das in Australien auswählen , das Ihnen am nächsten liegt. Ich bin in der Karibik. Das beste für mich ist normalerweise die Ost-USA. Und ich wähle einen Hocker, ein neueres Rechenzentrum für den Osten der USA ist. Nachdem wir all das getan haben, können wir uns einfach durchklicken und die anderen potenziellen Sitzungen sehen die anderen potenziellen Sitzungen damit wir ein Speicherkonto einrichten können da wir einen Link zu einem Speicherkonto erstellen müssen Blobs und Warteschlangen und Tabellenspeicher, jede Form von Unterbrechung mit diesen. Wir können ein Betriebssystem wählen. Ich überlasse das als Windows. Wir können auch einen Plantyp auswählen, nicht der Plantyp wird sich direkt auf die Kalkulation auswirken und die Ressourcen speichern , um Ihre Funktionen zu unterstützen. also auf klicken, erfahren Sie mehr, können Sie die Dokumentation so erweitern, dass der Verbrauchsplan automatisch skaliert wird und Sie nur für Rechenressourcen bezahlen , wenn Ihre Funktionen ausgeführt werden. Der Nachteil daran ist, dass sie die Ressourcen nach einer Zeit der Inaktivität tatsächlich ausschalten oder D zuweisen. Und wenn Sie sie dann wieder brauchen, wurden sie hochgezogen, aber das kann einige Zeit dauern, also ist es so, als wäre es nicht wirklich immer an Bord, dann wird es irgendwie abgerissen, so dass Sie lange Geld sparen Lauf jedoch, wenn es etwas ist, das Sie immer brauchen, dann ist dies möglicherweise nicht unbedingt der beste Plan für Sie, oder? Jetzt. Der Premium-Plan basiert automatisch auf Nachfrage und es gibt keine Leerlaufzeiten, sodass er immer skaliert wird und immer aktiviert ist, wenn Sie ihn benötigen, er ist jederzeit da. Eine andere Sache, die Sie beachten sollten, ist auch die Ausführungszeit. Der Verbrauchsplan hat also grundsätzlich eine Grenze von 20 Minuten, wenn ich mich nicht irre. Das bedeutet also, dass unsere Funktion die 20 Minuten nicht mehr abläuft. Während der Premium-Plan diese Frist nicht haben wird. Es wird also länger dauern als die maximale Ausführungszeit uns durch den Verbrauchsplan gegeben wird. Wie ich schon sagte, du musst wissen, was deine Kontexte sind und was du davon brauchst. Der dedizierte Plan gibt Ihnen tatsächlich die Art der Laufzeit des App Service-Plans, was bedeutet, dass er über dedizierte Ressourcen für Ihre AP-Funktion, Ihre Funktion, verfügt. Und Sie müssen nicht raten und buchstabieren, um zu sagen: Okay, ich gebe zu viel für die Ausgaben aus. Es wird automatisch skaliert und es ist weitaus prädiktiver, wenn Sie wissen , dass Sie Funktionen benötigen, und Sie werden dies langfristig tun. Sie möchten wahrscheinlich die dedizierte Anlage verwenden da Sie dann tatsächlich richtig abschätzen können , wie hoch Ihre Kosten bei einer bestimmten Art von Belastung sein werden. Sie können den auswählen, den Sie entsprechend Ihrem Kontext für diesen Kurs benötigen entsprechend Ihrem Kontext für diesen Kurs Wir werden mit dem Salzverbrauchsplan fortfahren , der als Serviceplan aufgeführt wird. Als nächstes gehen wir auf die Netzwerkseite. Es gibt hier nicht viel oder irgendetwas zu konfigurieren, da es so ziemlich so konfiguriert ist, dass es öffentlich mit dem Internet konfrontiert ist. Wir müssen also hier keine virtuellen Netzwerkanpassungen vornehmen, wir können zur Überwachung übergehen, wo wir Application Insights einschalten können . Und das ermöglicht es uns, Protokolle zu fotografieren und die Funktionen zu überwachen , während sie die Laufzeit ausführen, und die Fehler , die sie alle erhalten. Daher würde ich empfehlen , dass Sie dies aktivieren. Es kostet ein bisschen Geld, aber ich denke, dass es sich auf lange Sicht lohnt. Und dann sind Tags gut für die Erstellung einer Benennungsressourcen, insbesondere in einer Einstellung, in der Sie möglicherweise viele Ressourcen haben , die ziemlich ähnlich sind , die verschiedenen Zwecken dienen. So können Tags helfen, sie zu isolieren und Ihnen langfristig beim Aufbau und der Ressourcenzuweisung zu helfen. Aber das können wir für null überspringen. Und dann gehen wir zu Review and Create. Sobald wir überprüft haben, dass alles das ist, was wir wollen, können wir einfach auf Erstellen klicken. Wenn dieser Vorgang abgeschlossen ist, können Sie immer einfach auf Gehe zu Ressource klicken. Gehe einmal zur Ressource. Wenn Sie jemals einen App-Dienst bereitgestellt haben, wird es einen sehr ähnlichen Dashboard-Vers haben, der sich ähnlich fühlt. Wenn nicht, dann ist das in Ordnung. Dies ist das Dashboard , das Sie bekommen. Sie werden also hier sehen, dass er einige Diagramme erhält, einige Metriken zu Laufzeitbenachrichtigungen. Sie können die Zugriffssteuerung durchführen, um zu sehen, welcher Benutzer in Ihrer Organisation oder in Ihrem Azure AD das tun kann, was in dieser bestimmten Ressource Wir können Sicherheitswarnungen für Eindringlinge oder potenzielle Eindringlinge konfigurieren . Wir können Veranstaltungen einrichten. Und dann können wir natürlich, der Grund, warum wir hier sind, der Grund, warum wir hier sind, mit der Erstellung von Funktionen beginnen. Jemand, für den man es dort lassen kann. Nein, wir haben uns nur angeschaut, wie Sie eine Funktion erstellen und die verschiedenen Arten von Hosting-Modellen, die verschiedenen Preismodelle , die Ihnen zur Verfügung stehen. Und natürlich bestimmt der Kontext die Entscheidungen , die Sie treffen. Wir werden in den kommenden Lektionen einige Konzepte durchgehen . 4. Trigger und Bindungen: Alles klar Leute, in dieser Lektion werden wir uns Auslöser und Bindungen ansehen, und wir machen noch keine Programmierung. Wir untersuchen immer noch nur im Dashboard, um zu sehen, was Schwämme, was der Fachsprache bedeutet und wie wir die Punkte zwischen unseren Bedürfnissen verbinden und beobachten können unseren Bedürfnissen verbinden und beobachten die Azure-Funktionen sie uns zur Verfügung stellen. Wir haben unsere Funktion bereits erstellt und noch einmal, das geht nicht zum USV-Dienst, der alle Funktionen hosten sollte, die ausgeführt werden müssen. So können wir dorthin gelangen, indem wir zu dieser URL gehen. Und wenn ich darauf klicke, wirst du sehen, dass meine Funktionen laufen und laufen. Natürlich gibt es keine Phonetiker, durch die ich stöbern kann, also ist das in Ordnung. Wenn ich zu diesem Abschnitt gehe , der Funktionen enthält und auf Funktionen klicke, kann ich alle Funktionen sehen , die ich haben würde, den Trigger und den Status. Wenn ich also auf Erstellen klicke, wird dieser Beschnitt angezeigt, der es mir ermöglicht, die Entwicklungsumgebung zu definieren. Sie sehen hier, dass wir ein paar Optionen haben, die wir uns später ansehen werden. Und dann bitten sie uns , eine Vorlage auszuwählen. Das ist ziemlich gut und Sie können sehen, dass Sie in diesem Vorlagenbereich einige Optionen haben . Der Trigger repräsentiert die Aktion , mit der die Funktion ausgeführt wird, da eine Funktion nur dort sitzen wird. Wir alle, an dieser Stelle, gehe ich von unseren Programmierern aus, also wissen wir alle, dass Funktionen in einem Programm enthalten sein müssen und sie aufgerufen werden müssen, um ausgeführt zu werden. Nein, die Sache mit Azure-Funktionen ist, dass sie eigentlich eher eigenständige Funktionen ähneln, aber sie haben Auslöser und ein Trigger wird zur Ausführung auffordern. Wenn wir uns also die Spalte „Anforderungen dieser Vorlagen“ ansehen, sehen Sie die verschiedenen ausgelösten Typen , die unter diesen Vorlagen verfügbar sind. Sie haben also den HTTP-Trigger, d. h. eine Funktion, die ausgeführt wird, wenn sie eine HTTP-Anfrage erhält, und sie antwortet. Wenn Sie also über APIs Bescheid wissen, ist das alles eine API. Sie erstellen ein HTTP namens vielleicht Daten einschließen, vielleicht nicht. Aufgrund dieses Aufrufs reagiert die API jedoch entsprechend der Art und Weise, wie sie den Anruf im Verhältnis zu den Daten verstanden hat, die sie möglicherweise erhalten hat oder nicht. Das ist also eine von HTTP ausgelöste Funktion. Als Ihre Funktion haben Sie Timer-Trigger, was bedeutet, dass Sie ihn auf einen Timer setzen, alle fünf Minuten ausführen, einmal am Tag ausführen können usw. Also, Sie haben diesen Windows Scheduler oder Sie haben Bei diesen Cron-Jobs in Linux können Sie Timer-Trigger im Cloud-Bereich verwenden um diese Art von Ausführungen im Hintergrund durchzuführen. Ich werde nicht durchgehen und erklären was jeder einzelne Typ ist, aber Sie können die Beschreibungen immer einfach durchgehen und lesen, oder? Während eine Zuora-Klage Dinge schafft, wird es Sie tatsächlich aufklären, damit Sie die gerichtliche Entscheidung treffen können , die Sie haben Ihre Warteschlangengeschäfte ausgelöst werden, Sie haben Service Bus-Trigger, Themen oder Cue Trigger basierend darauf, welchen Sie für den Service Bus verwenden, haben Sie Cosmos DB-Trigger, oder? Und dann hast du im selben Atemzug das, was du Bindings nennst. Bindung ist im Grunde genommen, dass Sie eine nicht funktionsbezogene Funktion oder Funktionen abonnieren eine nicht funktionsbezogene Funktion , die Daten lesen oder schreiben. Sie haben also Input - und Output-Bindings. Wenn wir das sagen, gebe ich Ihnen nur dieses Szenario, damit Sie schätzen können, was ich sehe. Wenn Sie einen Timer-Trigger haben, ein Bild aus dem Blob-Speicher entfernen oder eine Nachricht aus der Warteschlange nehmen und etwas in Blob Storage legen soll dem Blob-Speicher entfernen oder eine Nachricht aus der Warteschlange nehmen . Nehmen wir an, Sie hatten ein einfacheres Formular angezeigt, das am meisten ausgelöst wurde. Wissen Sie, dass dieses Telefon angezeigt wurde, wird eine Bindung an die Warteschlange haben und es wird eine Bindung an den Blob haben. Dies ermöglicht es Ihnen, diese beiden Dienste von Drittanbietern abonnieren zu können diese beiden Dienste von Drittanbietern ich von Drittanbietern festlegen möchte, ich meine, sie sind nicht genau mit der Funktion verbunden. Sie sind eigenständige Azure-Dienste. Die Input-Bindung wäre also, ich lese aus der Warteschlange. Die Output-Bindung wäre, ich schreibe in den Blob Storage. Ich möchte nicht schreiben müssen, wenn ich 50 Codezeilen in unregelmäßigem Programm zum Consumer-Blob brauchte und mich 50 Codezeilen in unregelmäßigem Programm zum Consumer-Blob brauchte und damit verbinde und genau weiß, wohin ich gehe. wird es wahrscheinlich drei bis fünf Zeilen dauern Aufgrund dieser Bindungsfunktion wird es wahrscheinlich drei bis fünf Zeilen dauern. Das ist eine sehr leistungsstarke Funktion, mit der Sie einen Großteil des Boilerplate-Codes ausschneiden und einfach auf den Punkt kommen und die Geschäftslogik implementieren können. Es ist also sehr nützlich, Funktionen oder Funktionen zu implementieren , anstatt dass Sie schnelles Urteilsvermögen benötigen, Sie wissen genau, was Sie wollen. Sie haben keine Zeit, zu viel Code zu schreiben. Das bringen diese Triggervorlagen auf den Tisch. Und die Möglichkeit, die Funktion einfach an eine externe Ressource zu binden die Funktion einfach an eine externe Ressource zu macht es sehr einfach, eine App bereitzustellen , die viele verschiedene Teile einer 0 berührt. Das ist wirklich alles, was ich hier besprechen wollte. Wir erstellen noch keine Funktion. Wir wärmen uns immer noch auf das Armaturenbrett und die Sprache auf. Wenn wir wiederkommen, sprechen wir über die Entwicklungstools, die uns zur Verfügung stehen , obwohl wir nicht zu viel eingehen werden. Was wir gerade besprochen haben, welche Möglichkeiten es gibt. 5. Entwicklungstools: Alles klar, das letzte Mal, wenn wir hier sind, schauen wir uns die verschiedenen Arten von Triggern an, die Azure Functions haben könnten. Nein, lassen Sie uns den Schritt weiter gehen und uns tatsächlich die Werkzeuge ansehen , die uns umgeben würden, tatsächlich eine Interaktion schaffen. Wir hatten gesagt, Funktionen, kein Upsilon, es wäre die offensichtlichste Option, die darin besteht, das Portal zu verwenden, weil die Ports ein sehr, sehr leistungsfähiges Werkzeug sind. Es sitzt im Browser. Es benötigt nur sehr minimale Ressourcen auf Ihrem tatsächlichen Computer. Dies wäre also wahrscheinlich eher die Funktion oder die Option, nicht viele Personen könnten sich entscheiden, wenn Sie zu Create Function gehen, die erste, die dort ein Entwicklungsportal ist. Sie können Ihre Vorlage auswählen und dann auf Erstellen klicken, nachdem Sie ihr einen Namen gegeben haben, sagen wir, testen Sie das Portal. Http-Funktion tut etwas damit wir genau wissen, was die Autorisierungsstufe mit den Autorisierungsstufen zu tun hat mit den Autorisierungsstufen zu tun , mit denen wir Personen zur Interaktion interagieren werden diese Funktion. Also sage ich nur eine Funktion, du interagierst nur als funktionale Ebene im Vergleich zu anonym gegen Admin. Was passiert, ist, dass Sie, wenn Sie die Funktion verwenden, einen vollständigen Begriffsschlüssel benötigen. Wenn Sie Admin verwenden, benötigen Sie einen Hauptschlüssel und Sie können diese Schlüssel unter dem Abschnitt „Schlüsselverwaltung“ hier tatsächlich verwalten . Wenn ich also nur anonym sage, dann werden keine Schlüssel benötigt. Also mache ich das einfach dafür, wir klicken einfach auf Erstellen und das gibt uns ein kleineres Dashboard. Wir können uns den Code ansehen und direkt hier im Portal ausführen und testen. Und wie gesagt, ich stecke nicht zu viel in den Code ein, oder? Nein, ich werde nicht erklären, was das ist. Ich zeige Ihnen nur, dass dies ein Texteditor hier im Browser ist , damit Sie ihn speichern können, Sie können ihn hier testen und ausführen. Sie können alles tun, was Sie tun müssen. Wir können die Funktions-URL abrufen. All das kann genau hier im Portal passieren. Das ist also Option a für Ihr Tool, um eine Funktion zu schreiben. Keine Option B wäre hier Visual Studio und Visual Studio. Der, den ich verwende, ist das Installationsprogramm für Visual Studio 2022 Community Edition. Sie möchten sicherstellen, dass Sie diese Azure Development Workload ausgewählt haben . daher unter allen anderen Workloads, die Sie möglicherweise benötigen, sicher, dass Sie den Azure-Entwicklungsworkflow aufgenommen haben . Und wenn Sie diese Arbeitsbelastung haben, werden Sie beim Erstellen unserer Projekte geladen oder Sie haben die Möglichkeit , ein Projekt mit 0 Funktionen zu erstellen. Dies wäre, dies wäre nützlich , wenn Sie ein ganzes Entwicklungsprojekt haben an einem Team arbeiten. Sie wollen Quellcodeverwaltung, Management und all diese Dinge. Und Sie haben diese Lösung mit einer Reihe von Funktionen, die Sie bereitstellen könnten. Stellen Sie die Funktion nach oben ein. Und wenn Sie Visual Studio-Unregelmäßigkeiten verwenden, muss ich nicht als sehr gutes Entwicklungstool an Sie vermarktet werden. Eine andere Option, die Sie hätten , wäre Visual Studio-Code. Und Sie können immer zu den Erweiterungen gehen und als Ihre Tools installiert werden. So werden 0-Tools eine Reihe von Erweiterungen für alle Arten von Azure-Entwicklung enthalten, einschließlich einer 0-Funktionen. Wenn Sie nicht das gesamte Toolset möchten, können Sie natürlich speziell nach den Azure-Funktionen suchen, aber warum nicht einfach alle Tools installieren? Jetzt ist diese Option perfekt für Sie, wenn Sie Linux oder Mac verwenden, da Visual Studio-Code Open Source und plattformübergreifend ist. Es ist also nicht auf den Windows-PC beschränkt , wie es Visual Studio sein könnte. Es wäre eine gute Alternative, den Code wieder auf Ihrem Computer und die Quellcodeverwaltung usw. zu haben , außerhalb dessen sich im Portal befindet. Jetzt die nächste Option, die ich zugegebenermaßen nie versucht habe zu benutzen, aber sie ist da. Also werden wir, wir werden besprechen, dass es der beliebige Editor und die Kern-Tools sein würde , oder? So können wir fortfahren und Node.JS verwenden und diese Bibliotheken installieren . Und dann sagen sie uns, wie wir anfangen können zu sagen, dass wir es testen können , oder wir können ein Projekt erstellen , mit dem Sie es veröffentlichen können. Wenn Sie also kein GS bevorzugen, können Sie diesen Anweisungen folgen und dies durchgehen. Aber wie gesagt, wir programmieren in dieser speziellen Lektion keine Codierung, ich werde diese Funktion tatsächlich löschen weil ich sie nicht brauche. Wissenswertes. Wenn wir wiederkommen, werden wir weiterhin einige weitere Konzepte diskutieren und dann werden wir diesen Abschnitt abschließen und uns mit dem Spaß befassen , für den wir hierher gekommen sind. 6. Abschnitt Rezension – Azure Function Einführung: Alles klar, also schauen wir uns diese als sexuelle Notizen an. Lassen Sie uns überprüfen, was wir erreicht haben. Erstens haben wir uns angeschaut, was nötig ist, um eine 0-Funktion nach oben zu erstellen. Und wir haben darüber gesprochen, dass es sich bei der Funktion um eine einzige Bereitstellungseinheit handelt. Es ist ein App-Dienst , der eine Reihe von Funktionen hosten wird . So kann eine Funktion erstellt werden und sie kann verschiedene Vorlagen haben , sind verschiedene Trigger. Die Vorlage ist also nur die vordefinierte Kälte, aber Sie können jederzeit jede Art von Vorlage bereitstellen und den Code entsprechend lesen. Aber wir haben verschiedene Trigger, die die Funktionen auslösen. Wir haben uns bereits eine von HTTP ausgelöste Funktion angeschaut. Wir haben Timer wird q haben, wir haben Service Bus ausgelöst. Wir haben eine Reihe von ihnen, die wir verwenden können, langlebig und MQ. Später werden wir uns ansehen, was die Durable Functions wirklich bedeuten. Aber der Punkt ist , dass uns all diese Optionen zur Verfügung stehen. Wir haben uns auch einige der Entwicklungstools angeschaut , die uns zur Verfügung stehen. Wir werden Visual Studio verwenden oder ich werde Visual Studio verwenden. Aber meistens, wenn nicht, kann alles, was ich tue, im Portal erreicht werden die anderen Tools verwenden, wenn Sie sie verwenden müssen. Wenn wir zurückkommen, werden wir uns mit Funktionen beschäftigen etwas mehr mit Funktionen beschäftigen, die das Portal verwenden, und wir werden uns mit etwas Code die Hände schmutzig machen, an einem Test halten oder funktional und verkauft, um sich die Ausführung anzusehen und tatsächlich zu sehen, was es braucht, um einige Azure-Funktionen zu erstellen und bereitzustellen. 7. Azure-Funktionen in Azure Webportal: Alles klar Leute, willkommen zurück. In dieser Lektion werden wir direkt in den Fonds einsteigen und hier im Webportal einige Azure-Funktionen erstellen . Wir werden uns also Beispiele für von HTTP ausgelöste Filmvorführungen ansehen . Wir würden uns mit Timer ausgelösten Funktionen ansehen. Und wir werden uns eine mit Blob Storage ansehen, ungeachtet dessen, dass Sie dieselben Schritte ausführen und jede Art von Funktion bereitstellen können , die Sie benötigen, entsprechend der gewünschten Uhr, da sich der Auslöser fokussiert an diesen drei Beispielen. Und wir werden uns auch anschauen, wie Sie testen können. Nun, wir können uns die Protokolle ansehen , die Sie mit den Funktionen tun können, nur um sicherzustellen, dass Sie es richtig machen und alle Grundlagen abdecken. Also bleib hier. Wir haben viel Spaß im Overhead. 8. Erstelle eine HTTP-Anforderung, die ausgelöst wird:: Okay, also beginnen wir damit, eine von HTTP-Anfragen ausgelöste Funktion zu erstellen . Und das haben wir schon gemacht. Also werden wir unsere Schritte einfach wiederholen. Wir sind in der Funktion oben und gehen dann zwei Funktionen nach unten, dann klicken wir oben auf Erstellen. Und dann gibt uns das die Liste. Und aus dieser Liste wollen wir den HTTP-Trigger. Wenn Sie darauf klicken, geben Sie ihm einen Funktionsnamen. Ich nenne es einfach HTTP, fordere Bindestrich Funk oder eine Funktion an. Lass mich das einfach aufschreiben. Und dann hier für die Autorisierung von Endo das letzte Mal überflogen, aber ich werde diesmal viel langsamer vorgehen und genauer erklären, wann wir, wenn wir die Autorisierungsstufe für Funktion wählen, was passieren wird, ist, dass jedes Gerät, jede Farbe dieser Funktion einen für diese Funktion spezifischen Schlüssel bereitstellen muss . Indem wir also eine Funktion erstellen, erhalten wir einen Schlüssel, und dieser Schlüssel muss in allen Anforderungen an diese Funktion vorhanden sein, damit er tatsächlich ausgelöst wird. Wenn wir anonym sagen, ist es offen, jeder kann darauf zugreifen. Es sind keine Notwendigkeit für unsere Schlüssel oder zusätzliche Sicherheitseinschränkungen. Wenn wir dann admin verwenden, bedeutet dies, dass der Administrator, der ein Hauptschlüssel war, der es dem Administrator ermöglicht, jede Funktion, überhaupt, aber nur auf Admin-Ebene auszuführen überhaupt, , nicht ausgeführt werden kann. Ich lasse das auf Funktionsebene für null und klicke auf Create. Jetzt, da unsere Funktion erstellt wurde, können wir zum Code gehen und Beschnitt testen. Sobald wir in diesem Blade sind, wird uns einen Boilerplate-Funktionscode zeigen . Eine Menge Dinge, die für uns definiert sind. Sie werden feststellen, dass die Dateierweiterung hier Punkt CSS ist. Basierend auf der Vorlage, die Sie verwenden, bedeutet, dass Sie JavaScript verwenden oder C-Sharp verwenden usw. Dann wird diese Dateierweiterung natürlich anders sein. Und wenn Sie das ablegen, werden Sie feststellen, dass Sie auch eine Read Me-Datei Punkt MD haben oder Mark nicht ähnlich ist wie auf GitHub oder 0 DevOps für Dokumentationszwecke. Und Sie haben auch Function Dot JSON. Und diese Funktionspunkt-JSON-Datei hat im Grunde nur Konfigurationen für verschiedene Bindungen und verschiedene Metadaten über die Funktion. Hier können Sie also sehen, dass es spezifisch ist, dass wir den HTTP-Trigger verwenden und die Methoden von GET und post akzeptiert. Wenn wir also packen und vielleicht patchen und löschen wollen usw., erweitern Sie einfach den ganzen Abschnitt. Es gibt vier Methoden. Es gibt Zeiten, in denen Sie diese Datei möglicherweise ändern müssen, aber im Moment müssen wir dies nicht unbedingt ändern. Also lassen wir das einfach Ruhe und lassen uns zurück zu unserem Randolph CS6. Und was wir hier tun werden, ist den Code durchzusehen. Es ist also wirklich einfacher Code , bei dem ein paar Bibliotheken verwendet werden. Und hier schließen wir eine Bibliothek von Drittanbietern ein, die Sie wahrscheinlich mit NuGet bekommen müssten , wenn Sie eine unregelmäßige Dotnet-Anwendung durchführen. Aber wir benutzen hier ein paar Bibliotheken. Und dann haben wir eine Methode, die ein Augenaktionsergebnis zurückgibt. Wenn Sie also jemals mit APIs gearbeitet haben, wären Sie vertraut, dass sogar unser regulärer MVC hoch ist. Sie wären mit dem Ergebnis der Augenaktion vertraut. Beachten Sie, dass die von HTTP ausgelöste Funktion normalerweise sehr nützlich ist , um so zu tun oder nicht so zu tun, sondern um sich wie eine API zu verhalten. Und es ist auch sehr nützlich, um auf Webhooks zu reagieren. Alles, was HTTP-Datenverkehr in der HTTP-ausgelösten Funktion , ist im Allgemeinen ist, ist im Allgemeinen für diese Art von Operation ausgestattet. Und so können Sie tatsächlich eine vollständige API oder eine vollständige Anwendungslogik erstellen eine vollständige API oder eine vollständige Anwendungslogik indem Sie eine Reihe von HTTP-Anfragen ausgelösten Funktionen verwenden, jeweils entsprechend auf die spezifische Anforderung reagieren. Hier, innerhalb unserer Methode, sehen wir, dass wir zu Parametern kommen, ist GTP-Anfrage. Ich rufe mich bei Rick an, und wir setzen auch eine Instanz unseres Loggers ein. Also protokollieren wir Informationen in erster Zeile, wo sie sehen, dass dies ein Prozess war. Es hieß, wir bearbeiten unsere Anfrage. Dann erhalten wir von der Anfrage eine Abfragezeichenfolge mit dem Namen. Wir erhalten also den Wert aus der Abfragezeichenfolge mit dem Namen. Und wir speichern es innerhalb dieser Variablen namens name. Und dann sehen wir bitte den Prozess des Anforderungstextes in dem Anforderungstext. Ich suche diesen Anforderungstext, wenn es JSON ist oder streame ihn an JSON, schau hinein und schau nach, ob du den Namen finden kannst. Hier heißt es, dass Sie entweder die Abfragezeichenfolge mit dem Namen in der Abfragezeichenfolge in der URL selbst finden Abfragezeichenfolge mit dem Namen in der werden. Oder Sie können im Anforderungstext nachsehen , falls es sich um eine Post-Anfrage handelt und nach Daten suchen, die den Namen haben eine Post-Anfrage handelt und nach Daten suchen , bitte geben Sie mir diesen Text an. Das ist alles , was gerade tut. Es hätte entweder so sein können, weil du normalerweise entweder nach oben schickst oder ich bekomme, was hier ist. Der Code zeigt Ihnen nur , dass Sie hier einen Abfragezeichenfolgenwert erhalten , und hier erhält er etwas von einem Meinungsforscher. Das ist alles, was wirklich passiert. Dann wird es eine Antwortnachricht formulieren. Und es ist gut zu sagen, ob diese Namensvariable nicht null oder leer ist, oder es tut mir leid, wenn sie kleiner, leer ist , geben Sie ihnen einen Fehler C und Sie müssen sie entweder in der Kernzeichenfolge anhalten oder im Anforderungstext. Und wenn es nicht Dollar leer ist, drucken wir Hello name. Dies wurde erfolgreich ausgeführt. Dann kehren wir zurück, okay, was sind 200 Ergebnisse, wenn Sie mit HTTP-Antwortcodes vertraut sind , okay? Die Funktion OK gibt sowohl einen 200-Antwortcode als auch diese Nachricht zurück . In Ordnung, das war ein Rundgang durch den Code. Ich werde es nicht ändern. Das wird es testen. Also lasst uns testen und laufen. Wir sehen hier zuerst wird OK sagen und testen, machen Sie einen Post - oder einen Get Methodenaufruf? Zweitens, welche Art von Schlüssel, richtig, damit ich das Hauptschlüsselmonster verwenden kann, denn im Portal sind wir die Administratoren und ein Hauptschlüssel kann sowieso alles tun. Nun, Sie könnten es einfach mit einer Funktionstaste testen, da wir es dafür bereitgestellt haben. Sie können hier einen Parameter hinzufügen oder den Körper hier ändern. Also gehe ich in der Leiche zu meinem Namen. Das ist eine Post-Anfrage. Wenn ich also auf Ausführen klicke, bekomme ich die ALU-Ausgabe Alpha 200-Antwort, hallo, den Namen, den ich eingegeben habe. Dies wurde erfolgreich ausgelöst. Das ist also ein guter Test. Nun springen wir zurück zur Eingabe und ändern die Parameter. Also mache ich diesmal eine GET-Anfrage und stelle diese Abfrage und rufe den Variablennamen auf. Die Parameter im Namen und im Wert sind also immer noch mein Name. Und ich sage einfach „Dash get“. Und ich weiß nicht, ob Sie das erleben, aber während ich das Portal benutze, muss ich einen Knopf drücken und dann warten , bis der Charakter erscheint. Das ist also einer der Gründe , die nicht wirklich gerne direkt im Portal arbeiten, zumindest für diese Art von Operation. Es ist ein bisschen langsam für mich, aber du kannst es mich wissen lassen, wenn du das auch erlebst. Aber wenn ich auf Ausführen klicke, erhalten wir die gleichen Ergebnisse. Diesmal bekam es es aus der Abfragezeichenfolge im Gegensatz zum Anforderungstext wie für den Beitrag. Wenn ich nun diesen Abfrageparameter verpasse und dann starte, kommen wir zu unserem Fehler. Dieses HTTP löste Schaum aus, den Sean erfolgreich ausgeführt hat. Aber bitte geben Sie Daten wie erwartet ein. Das ist so ziemlich Halt. Die von HTTP ausgelöste Funktion funktioniert. Ich bitte, dass Daten eingeliefert werden. Wir schreiben Code, um die Daten zu analysieren sie so zu manipulieren, was wir damit tun müssen. Und dann schicken wir vielleicht zurück, wir schreiben ein Protokoll, damit wir den Ausführungspfad tatsächlich zurücklegen können . Aber wir lassen sie auch einfach wissen, welche Art von Reaktion. Also könnte ich tatsächlich NC antworten, wenn der Abfrageparameter nicht null war, dann geben Sie ein neues möglicherweise schlechtes Anforderungsobjekt-Ergebnisse zurück, oder? So etwas. Das ist ziemlich viel Holdout funktioniert. Nein, ich kann die Funktions-URL tatsächlich abrufen , indem ich oben auf diese Schaltfläche klicke. Dann wird es sagen, gib mir den Standardwert. Nun, welchen Link willst du? Es wird also tatsächlich den Schlüssel in dieser URL enthalten. Will ich den Hauptschlüssel oder möchte ich eine Funktionstaste? Also habe ich es auf Standardeinstellung belassen. Und wenn wir uns diese URL ansehen, benutze ich einfach Notepad Plus Plus. Hier sehen wir, dass wir die URL zur Funktion nach oben haben. Und dann heißt es Slash-API und dann der Name der Funktion. Und dann ist Code gleich, und dann diese gedämpfte Zeichenfolge, die dieser Schlüssel ist, Das ist die Funktionstaste. Wenn ich dies also von irgendeiner Art von Anwendung ausführen musste , die ich schreibe, muss ich es erneut ausführen. Du siehst also mindestens so aus. Ohne diesen Code würde es niemals das Ziel erreichen. Er würde den Antrag einfach ganz ablehnen. Wenn wir die anderen Seiten durchgehen, die uns von diesem Bildschirm aus zur Verfügung stehen, können wir zur Integration gehen, die es uns ermöglicht, bestimmte Dinge zu bearbeiten. Also wir Kandidatenauslöser, wir können die Funktion bearbeiten, wir können die Eingaben ändern und die Ausgänge sind ein Mini-Flussdiagramm, nur um zu sagen, dass es hier beginnt, dies ist der Prozess und das ist es, was erwartet wird. Wir können zum Monitor gehen , der uns im Grunde zeigt, dass alle Hinrichtungen und Hausbesitzer für sie erfolgreich waren, wie viele von ihnen sind gescheitert? Dann können wir zu den Funktionstasten gehen, die uns unsere Tasten zeigen. Wir können jederzeit klicken, um den Wert anzuzeigen , da wir die Funktionstaste verwenden, unsere Funktionstaste, wenn Sie ihn jemals abrufen müssen, wenn Sie ihn erneuern, zurücksetzen müssen usw., was auch immer Sie tun müssen, das ist so ziemlich zum Einrichten einer HTTP-ausgelösten Funktion. 9. Erstelle eine Timer: Die nächste Art von Funktion, die wir uns ansehen werden, ist eine durch Timer ausgelöste Funktion. Das wurde also auf Funktionen geworfen. Fahren Sie fort und klicken Sie auf Erstellen, und dieses Mal möchten wir, dass der Timer ausgelöst wird. Also haben wir auf Timer Trigger geklickt und wir können ihm einen Namen geben, jemanden, der Timer ausgelöst Funktion sitzt. Dann können wir den Zeitplan aufstellen. Der Zeitplan basiert auf einem chronischen Ausdruck. Wenn Sie also mit Linux vertraut sind, dann sind chronische Ausdrücke genau so, wie Sie das Intervall darstellen, in dem Sie möchten, dass etwas wiederholt werden soll. Sie können also hier sehen , dass es in Form einer Sekunde, dann Minute ist, dann alles was wir sind, so dass jedes Sternchen im Grunde diese Zeiteinheit repräsentiert. So ziemlich hier. Es sieht 0 Sekunden, aber fünf Minuten. Wenn ich das also in eins ändere, wäre das wie immer Minuten im Gegensatz zu mehr als fünf Minuten. Und dann würde dieses Sternchen das niedrigere als das d und dann den Wochentag oder den Monat und den Wochentag darstellen das d und dann den Wochentag . Das ist das alles, was Sie wirklich planen würden, an das Sie sich gewöhnen können sich gewöhnen wenn Sie nicht vertraut sind, wie es ist, aber es sind sehr mächtige Konstrukte verstehen und schätzen müssen. Lassen Sie uns also fortfahren und diese von Timer ausgelöste Funktion erstellen . Sobald das erstellt wurde, können wir zu Code und Test springen. Und Sie sehen hier, dass es sich einen relativ einfachen Code handelt. Wir haben eine Funktion namens Ron, und sie hat einen Parameter namens mein Timer, der alle Dinge enthält, die Sie benötigen ein Objekt zu umgeben , das es ermöglicht, es zu erfahren. Ich bin Details über den verwendeten Timer und er hat auch die Logging-Bibliothek. Es protokolliert bei den Informationen oder macht einen Informationslogger jedes Mal, wenn er ausgeführt wird und den Zeitstempel anzeigt. Wenn ich jede Minute in die Protokolle schaue, wirst du das sehen, also lasse ich es so Minuten und zeige dir dann die Folgen. Okay, also habe ich zwei Minuten gewartet. Und dort sieht man die Hinrichtung für die erste Minute und die Hinrichtung zum zweiten Mal. Alles klar? Das ist so ziemlich das, was Ihnen der Timer-Service bringt. Ich bin mir sicher, dass Sie über verschiedene Anwendungen nachdenken , die dies haben könnte, es könnte sich in einer Anwendung befinden, in der Sie jeden Morgen oder jede Nacht eine Säuberung durchführen müssen , oder Sie benötigen eine Stapelverarbeitung um jeden Tag zu einer bestimmten Zeit einzusteigen. Sie haben eine Reihe von Anwendungen für Timer, Timer ausgelöste Funktionen. In dieser Situation brauche ich es nicht im Hintergrund laufen. Wenn Sie nicht möchten, dass es im Hintergrund läuft, können Sie es immer einfach deaktivieren. Und wir haben uns bereits angeschaut, wie wir eine Funktion löschen können. Also habe ich diesen einfach deaktiviert vielleicht in der Zukunft, wenn wir es wieder benutzen, aber das ist es wirklich für ein Ganzes. Sie erstellen durch Timer ausgelöste Funktionen und wie sie funktionieren. 10. Erstelle eine Blob ausgelöst von Funktion: Alles klar, als Nächstes schauen wir uns an, was nötig ist um eine durch Blob ausgelöste Funktion zu erstellen. Also lasst uns in der Klinge kreieren, wir werden nach Blob suchen. Sobald es geladen ist. Da sind wir los. Also wie dein Blob Storage Trigger, richtig. Sie sehen also, dass es eine Reihe von ihnen gibt , und ich ermutige Sie, sie tatsächlich auszuprobieren. Möglicherweise haben Sie sie außerhalb dieser Demonstrationen , die ich mache, nützlich . Daher ermutige ich Sie , zu versuchen, zu sehen, wie das Quartal aussieht, und sehen Sie, wie der Bindungscode aussieht. Aber hier, wenn wir den Blob Storage Trigger machen, kann ich den Namen ändern, damit die Blob ausgelöst Funktion ist. Und dann wird unser Weg sein, im Grunde wird der Weg sein , wo soll ich hinschauen? Slash, am Ende verbindender Ausdruck, worauf sollte ich achten? Also hier sage ich, dass ich nach dem Namen von allem suche , was im Blob ist. Das ist ein verbindlicher Ausdruck. Gib mir den Namen, damit ich auf diesen Thread zugreifen kann. Und dann wird die Speicherkontoverbindung ziemlich gefragt, wird die Speicherkontoverbindung ziemlich gefragt, welches Speichersymbol ich verwenden soll? Es wird also standardmäßig auf einen Wert gesetzt, der bereits mit dem AP verknüpft in dem die Funktion gehostet wird. Also gehe ich weiter und klicke auf „Erstellen“. Und dafür gehen wir zu Code und Test, wo wir sehen werden, dass wir Informationen von einem haben , dem Stream, der mein Blob genannt wird. Und dann der Name, der der verbindliche Ausdruck ist , den wir eingerichtet haben. Und dann haben wir den Logger. Natürlich ist das Sitzen und den Blob zu beobachten. Wechseln wir nun zum Funktionspunkt JSON und schauen noch einmal nach. Also haben wir den Namen des Typs Blob Trigger, wir haben den Pfad, Samples, Dash Workitems, Schrägstrich den Namen. Was wir also tun müssen, ist einen Blob zu haben, der mit diesem Namen existiert. Wenn ich in meinen Speicherkonten schaue und zum Speicher komme, gehe ich und falls Sie nicht vertraut sind, können Sie zum Dashboard gehen, Sie können es unter allen Ressourcen sehen. Wenn nicht, können Sie einfach zu Speicherkonten gehen. Und dann können Sie auf Speicherkonten klicken. Das zeigt alle Ihre Container nicht an. Diese Behälter sind also wirklich die Art, in der die Akten gespeichert werden. Ich möchte keinen Container mit diesem Namen haben. Wie auch immer du heißt, ich würde da sitzen einige gestrichelte Arbeitselemente waren die Standardeinstellung. Das haben wir nicht geändert. Welchen CPI es ändert, egal welchen Namen Sie dort angeben, Sie müssen sicherstellen , dass Sie einen Blob haben , der mit diesem Namen existiert. Also werde ich diesen Container erstellen und einfach weitermachen und wissen, dass er existiert. Ich kann anfangen, Dateien hinzuzufügen. Also lade ich einfach eine Testdatei hoch , die ich auf meinem Computer habe. Also klicke ich einfach auf Hochladen und wähle die Datei aus. Und manchmal ist dies möglicherweise schneller wenn Sie den Storage Explorer haben. Das ist also ein Tool eines Drittanbieters, das Sie, wenn Sie möchten, Microsoft Azure Storage Explorer installieren können, mit dem Sie alle seine Speicherkonten und alles von Ihrem Computer aus verwalten können, aber das ist ein Gespräch für ein anderes Mal. Teilen Sie die Datei auf und wählen Sie dann meine Testdatei aus und laden Sie sie hoch. Und du siehst, dass ich es im Tab hochgeladen habe. Wenn ich zurück zur Funktion gehe und mir das Log anschaue, das du hier siehst , protokolliert es, dass es eine neue Datei sieht und das ist der Pfad. Du siehst den Namen dort, blob dash test.txt. Sie sehen die kreative Zeiteinfügezeit bei all diesen Dingen. So können Sie sich hinsetzen und das Aufbewahrungsohr beobachten , um es zu sehen. Vielleicht wolltest du Bilder komprimieren, sobald sie hochgeladen wurden. Vielleicht willst du sie bewegen oder umbenennen. Es gibt eine Reihe von Dingen, die Sie mit so etwas machen können . Wieder einmal bestimmen Ihre Kontexte immer Ihre Bewerbung. 11. Section – Verschiedene Azure-Funktionen: Wo ist das Ende dieses Abschnitts? Und wir werden nur überprüfen, was wir gelernt haben. Eine für den Fall, dass Sie es verpasst haben, als wir es zum ersten Mal wieder gemacht haben, und wir haben es noch dreimal gemacht. Wir wissen, wie man eine neue Funktion erstellt. Innerhalb unserer Funktion würden wir also erstellen und dann wählen wir aus der Liste die Vorlagen aus, die am besten zu dem passen, was wir brauchen. Es ist besser, es einfach aus den zehn Fuß zu erstellen , anstatt einen zu erstellen und es dann für einen anderen anzupassen. Aber lassen Sie uns einfach mit dem arbeiten, was es uns als Vorlagen gibt. Und wir haben uns den HTTP-Trigger angeschaut, uns den Timer Trigger angeschaut und uns den Blob Storage Trigger angeschaut. Basierend auf den verschiedenen Ressourcen und Diensten, mit denen Sie am Ende interagieren, können Sie jedoch und Diensten, mit denen Sie am Ende interagieren, von Anfang an mit der entsprechenden Vorlage beginnen. unsere HTTP-Anfragen anschauten, auf die wir uns konzentrieren sollten, haben wir gesehen, dass wir ein Mini-Dashboard erhalten haben, das es uns ermöglicht , die Ausführungen zu sehen, die fehlgeschlagen sind, wie oft wir eine erfolgreiche Ursache haben, vielleicht 400 Anrufe, 500-Klausel usw. All diese stehen uns leicht zur Verfügung. Wir können die Funktions-URL erhalten , , der der Code oder der Schlüssel angeschlossen ist, der es uns ermöglicht , ihn an jede Anwendung anzuschließen. Wir haben auch besprochen, dass wir beim Erstellen der Funktion, zumindest der HTTP-Funktion, zumindest der HTTP-Funktion, sie als anonym oder für anonymen Zugriff für eine Sicherheits- oder Moschee erstellen können eine Sicherheits- oder , um Sicherheit oder Admin-Ebene bereitzustellen sicherheit. Wir haben uns das alles angeschaut. Dieser ist sozusagen außerhalb der Funktionsebene beschränkt . Der Code plus Test. Wir können uns den Code ansehen , den wir ändern müssen. Natürlich, was dieser tut ist, dass es sowohl in der Abfragezeichenfolge als auch im Anforderungstext basierend auf der Art der Anfragen aussieht im Anforderungstext basierend auf , die wir ausführen, wir würden das eine und nicht das andere vielleicht oder beide verwenden. Es hängt von Ihrem Kontext ab. Wir können von dieser Schnittstelle aus immer selbst testen und wir können die Protokolle genau hier anzeigen , um zu sehen, was basierend auf unseren Protokollinformationen passiert , die wir in unseren Code schreiben. Dies ist also die Konsolenära, die uns alle Daten gibt. Entsprechend. Wissen Sie, wenn wir zur Integration gehen, erhalten wir einen schönen kleinen Workflow-Bildschirm , der es uns ermöglicht, einige der Bindungen zu ändern, und wir werden uns später mit Bindungen befassen. Wir haben also Eingabebindungen und Output-Bindings. Wir haben den Auslöser , den wir ändern können. Wir können wieder zum Code springen. Wenn wir im Monitor schauen, sehen wir hier, dass wir Zugriff auf die Anwendungseinblicke erhalten . Denn denken Sie daran, dass wir das aktiviert haben, als wir die Funktion erstellt haben. So können wir alle Anrufungen sehen. Jedes Mal, wenn es ausgeführt wurde, war das Ergebnis, wie lange es gedauert hat, eine erfolgreiche Ausführung oder nicht. Wir können auch in den Protokollen nach detaillierteren Protokollen von allem suchen detaillierteren Protokollen von allem , was mit der App passiert ist oder passiert. Zu dieser Zeit. Wir können auch zu Funktionstasten gehen und wir können eine neue Funktionstaste erstellen, wenn wir möchten, wir können eine widerrufen, die wir erneuern können. Wenn wir die vollständige Kontrolle darüber haben müssen , wie diese Funktion funktioniert. Und all das ist nur die HTTP-Anforderungsfunktion. Aber wir haben auch gesehen, dass jeder Funktionstyp zwar ähnlich ist, aber seine eigenen Nuancen aufweist , basierend auf dem, wofür er da ist. Der Timer hat einen ausgelöst, wird immer wieder etwas tun basierend auf dem von uns angegebenen Cron-Ausdruck. Der Blob wollte uns dabei beobachten unsere Akte dort abgelegt wird , und dann kann sie verarbeitet werden. All diese Dinge sind also möglich, mit all dem erledigt, wir haben diesen Abschnitt abgeschlossen. Wenn wir wiederkommen, werden wir versuchen, Visual Studio zu verwenden, um eine Funktion zu erstellen. Und wir werden sehen, was die Unterschiede zwischen der Durchführung im Portal und der Verwendung von Visual Studio auf unserem Computer bestehen. 12. Azure-Funktionen in Visual Studio: Okay, also in diesem Abschnitt werden wir einige Funktionen erstellen , die eine Funktion mit Visual Studio verwenden. Was ich hier gemacht habe, ist, dass ich Porto gesprungen bin, erstellt, zu Funktionen gegangen bin und dann das Visual Studio aus der Dropdown-Liste ausgewählt habe . Und sie skizzieren alles, was Sie brauchen, um das zum Laufen zu bringen. Sie werden immer noch in Visual Studio 2019 erwähnt. Wenn Sie also damit arbeiten, dann können Sie kein Problem mitverfolgen. Aber ich werde Visual Studio 2022 für diese Reihe von Aktivitäten verwenden. Sie können diesen Anweisungen einfach folgen. Und wirklich und wirklich das ist so ziemlich genau das, was ich mit dir durchgemacht habe. Wenn du das einfach lesen und den Rest dieser Lektionen überspringen willst, dann liegt das an dir. Aber im Moment werde ich fortfahren und wir werden gerade im nächsten Video zu Visual Studio springen und loslegen. 13. Erstelle eine Function: Ordnung, also gehe ich an dieser Stelle davon aus, dass Sie Visual Studio bereits installiert haben und Ihre Azure-Workload bereits eingerichtet haben, wie wir zu Beginn dieses Kurses besprochen haben. Um loszulegen, werden wir rüberspringen und ein neues Projekt erstellen. Und dann kannst du filtern. Sie können immer einfach den Zeitraum von Vorlagen nach Ihren Funktionen suchen . Oder wenn du es schon sofort getan hast. Irgendwann wäre es zur Seite. Hier. Ich werde nur eine 0 Funktionen sehen Fundamentals. Das ist der Name des Projekts und die Lösung. Und dann klicke ich einfach auf Create. An diesem Punkt werden sie mir ein paar Fragen stellen. Erstens, welche Art von Vorlage hätte ich gerne? Ähnlich wie das Portal in dem wir eine Vorlage auswählen können, fragen sie mich, ob Sie einen Dienstauslöser usw. möchten , Sie in den Vorlagen sehen. Dieses Mal gehe ich mit leeren , damit wir ein wenig erforschen können. Also sage ich leer und dann kann ich einen Speicheremulator verwenden. Wenn Sie dies also tun, ohne vielleicht direkten Zugriff auf das Azure-Abonnement zu oder mit Azure noch nicht so weit gekommen sind, könnten Sie tatsächlich einfach einen Speicheremulator verwenden , in dem wir tun Sie so, als hätten Sie eine Lagerung von Zapfen, die ab dem Kurs gekauft wurden, mit einigen Einschränkungen. Also werde ich einfach mit all dem fortfahren und gehe weiter und klicke auf Erstellen. Sobald dieses Projekt erstellt wurde, können wir uns einige der Dateien ansehen , die uns zur Verfügung stehen. Also wollte ich mit den Projektdateien beginnen. In dotnet gibt es ine.net Core Drei-Punkt-Ein-O-Boards, wenn Sie auf die CS-Annäherungsdatei klicken, können Sie tatsächlich die XML-Datei dahinter sehen. Sie können immer mit der rechten Maustaste klicken und zur Projektdatei bearbeiten gehen , und Sie erhalten diese Ansicht ebenfalls. Diese Akte Die ist ein bisschen größer. Diese Datei beschreibt wirklich nur die Schriftart, auf die wir abzielen, das Dotnet sucht Framework und wir verwenden Azure Functions Version für zum Zeitpunkt dieser Aufnahme, dies ist die neueste und am größten. Und wenn wir arbeiten werden, müssen wir auf das Paket Microsoft.Net.SDK Punktfunktionen verweisen . Und hier geht es um zwei Dateien, die uns Host Dot JSON und den lokalen Punkt settings.js SON gegeben werden . Und sie lassen uns wissen , dass sie sie in das Ausgabeverzeichnis für die lokale settings.js kopieren werden, wenn sie Ausgabeverzeichnis für die lokale nie in ein veröffentlichtes Verzeichnis gehen . Und das liegt wirklich daran, dass es sich um eine lokale Datei handelt, aber wir werden sehen, warum in ein paar. Wenn wir also zur Host-Punkt-JSON-Datei springen, ist es nur eine Konfigurationsdatei. Es sagt OK Version 2, wir werden sehen, wofür das in ein paar steht, aber es hat auch einige Konfigurationen protokollieren, wo es sieht, dass es die Application Insights verwenden sollte , die ist das, was wir wissen, dass wir in unserer Funktion aktiviert haben. Das ist wirklich alles, was dort vor sich geht. Wenn wir uns die lokalen Loseinstellungen, JSON, ansehen, wird es uns wissen lassen, dass es nicht verschlüsselt ist und einige Werte hat. also, dass der Speicher von 0 Web Jobs Wir wissen also, dass der Speicher von 0 Web Jobs tatsächlich das Speicherkonto sein soll , das mit einer Funktion verbunden ist. Aber weil wir den Entwicklungsspeicher verwenden , der auf true festgelegt ist, ist dies der Wert, den er sieht. Tu einfach so, als gäbe es so ziemlich. Und dann gibt es uns die Arbeit oder Laufzeit der Ozeane, die auf dotnet eingestellt ist, was etwas sein könnte, das auf der Art der verwendeten Sprache basiert . Aber weil wir C-Sharp verwenden, brauchen wir eine Dotnet-Laufzeit. Das ist also standardmäßig auf dotnet festgelegt. Das ist also ein grundlegender Rundgang durch diese Funktionen nach oben. Und die beiden Akten, die wir bekommen haben. Wenn wir zurückkommen, schreiben wir tatsächlich Code, um eine Funktion zu schreiben. 14. Testfunktion in Visual Studio: Alles klar, jetzt , da wir unser Projekt in Betrieb haben , haben wir nicht eine tatsächliche Funktion. In Ordnung, also klicke ich mit der rechten Maustaste auf das Projekt, gehe zu Hinzufügen und dann gehe ich zu der neuen Azure-Funktion. Wenn ich das tue, wähle ich den Namen dieser Funktion und lasse einfach die Standardfunktion Ein-Punkt CS will diesmal nicht, dass dies kein Punkt-CSS ist, aber ich belasse den Standardnamen. Geh weiter und klicke auf Hinzufügen. Ich weiß, dass dieses Dialogfenster uns fragt , welche Vorlage wir haben möchten. Also haben wir das erste Mal, wenn Sie ein Projekt erstellen, sind wir mit einem leeren gegangen, aber es ist Geld. Für jede Funktion, die wir erstellen werden, sehen wir dieselben Vorlagen , die im Portal gesehen hätten. Und jeder von ihnen würde uns die gleichen Konfigurationsfragen stellen , die wir gesehen hätten , wenn wir sie im Portal mit einem Timer erstellen würden im Portal mit einem Timer um den Zeitplan immer noch mit dem Blob einzurichten, wir können die Verbindung immer noch einrichten. Nun, dieser ist ein bisschen anders als das, was wir zuvor gesehen haben, wo wir uns setzen, um den Weg und eine Reihe von Dingen einzurichten . Nun, ich werde mit einem Weg des geringsten Widerstands gehen. Gehen wir mit dem HTTP-Trigger und ich werde dieses Mal einen anonymen aussuchen. Und lasst uns weitermachen und hinzufügen. Sobald wir das gemacht haben, erhalten wir diese Funktionsdatei. Und ich werde feststellen, dass wir nur die CSV-Dateipunkte haben, die Punkte CS6 fünf. Wir haben auch keine Funktion, die JSON-Datei enthält. Was passiert, ist, dass wenn wir Visual Studio zum Erstellen unserer Funktionen verwenden, es tatsächlich in eine DLL kompilieren wird. Und wenn Sie Dotnet lange genug benutzt haben, wissen Sie, was eine DLL ist. Und dann haben wir diese DLL alle Informationen, die das Portal verwenden muss sobald es bereitgestellt wurde, um irgendwelche Konfigurationen und alles andere zu ermitteln , was ich geschrieben habe. Es wird also von Visual Studio vorkompiliert und einfach in Azure bereitgestellt , anstatt sich in einer 0 zu treffen und dann in einer 0 kompiliert und dann in Azure verwendet, wie wir es im Portal machen. Sie sind also wahrscheinlich vertrauter Bereich, wenn Sie Ihren Code schreiben , und Sie haben besseren Zugriff auf Intelligenz und Ressourcen hier in Visual Studio Wir können auch viel mit dem Debuggen umgehen besser , weil wir es tatsächlich einfach im Debug-Modus ausführen und unsere Haltepunkte genau wie bei jeder anderen Art von Anwendung setzen unsere Haltepunkte genau wie bei jeder anderen Art von Anwendung , die wir in Visual Studio erstellen werden. Hier haben wir eine statische Klasse und dann haben wir den Funktionsnamen. Und dann haben wir eine statische Methode namens run, die weiß, dass es sich um einen HTTP-Trigger handelt. Es weiß, dass die Autorisierungsstufe anonym ist, was ich hier immer ändern kann , um beide zu funktionieren, natürlich müsste man etwas mehr Konfiguration mit dem Schlüssel haben usw. Aber das ist anonym. Wir haben die verschiedenen Arten von Anfragen, die akzeptiert werden. Also GET und poste. Und dann können wir eine Wurzel und eine Reihe von Dingen definieren , die uns direkt hier zur Verfügung stehen. Letztendlich ähnelt der Code oder der Code im Hauptteil der Funktion selbst dem was wir zuvor gesehen hatten. Wenn wir das ausführen würden und ich einfach F5 drücken und ich setze einen Haltepunkt, nur um Ihnen zu zeigen , dass das Debuggen dieser funktioniert. Wenn ich F5 drücke, geht es zu Visual Studio. Visual Studio-Dinge. Wenn es das erste Mal ist, Sie möglicherweise sehen, dass es einige Werkzeuge installiert, während es weitergeht. Aber hier sehen wir, dass es offen läuft. Es lässt uns also wissen, dass , um zu dieser Funktion zu gelangen, wir, um zu dieser Funktion zu gelangen, eine Anfrage über diese URL senden müssen. Ich leihe mir diese URL aus und verwende ein Tool , das wir für EPA-Tests verwenden, namens Postman. Wenn Sie also kein Post-Geld haben, können Sie es immer installieren. Es ist ziemlich einfach, Posts ME n zu finden, aber es ist ein gutes Tool, um beim Testen einfach zufällige HTTP-Anfragen abzusteigen . Also werde ich einfach weitermachen und die URL eintragen. Ich lasse es so, wie ich es kriege. Und für die Parameter füge ich diesen Namensparameter ein. Und ich habe den Test vom Postboten als Wert gesehen. Wenn ich dann sende, wird es eine Verbindung zu unserer App herstellen, die in Laufzeit ist, IACUC die Haltepunkte nimmt. Beachten Sie also, dass es einen Haltepunkt setzt, ich kann meine Objekte tatsächlich abfragen. Schauen wir uns also die Anfrage selbst an. Das Anforderungsobjekt enthält alles über die HTTP-Anfragen. Es hat einen Mythos, der benutzt wurde. Der Pfad, alles, was ich so ziemlich wissen muss , wenn ich keine Anfrage mache, werde ich sehen, dass der Okayed einen in der Liste gefunden hat und dort den Schlüsselnamen und die Wertest-Anpassung hat. Ich kann feststellen, dass es den Namen richtig machen soll. Wenn ich also nur F5 drücke, kann ich diesen Haltepunkt wissen entfernen, und ich drücke einfach F5, damit er fortfahren kann. Dann tauchte das Konsolenfenster auf, als Sie in den Debug-Modus gegangen sind. Aber wenn ich zurück zu Postman gehe, das ist das Tool, das die Anfrage gestellt hat, dann werden Sie sehen, dass es mit einer 200 geantwortet hat. Okay, hallo Tests vom Postboten. Diese von HTTP ausgelöste Funktion wurde erfolgreich ausgeführt. Das ist nur halten lokale Tests können passieren, nein. So können wir tatsächlich Tools wie Postman und jedes andere Tool verwenden , das Sie vielleicht haben, vielleicht Fiddler oder sogar Ihren Browser. Und versuchen Sie diese Art von Operationen zu machen. Wir können wissen debuggen, und wir können unsere Anwendung oder eine Funktion besser abfragen, leider Code, während wir Geschäftsregeln für Knoten erstellen , das ist es wirklich. Jetzt wissen wir, wie man eine Funktion mit Visual Studio Hall erstellt , um sie zu testen und in Tools von Drittanbietern in Ihrem Browser zu integrieren , um HTTP oder Anfragen auszulösen. Wissen Sie, während wir weitermachen, werden wir etwas komplizierter. Aber im Moment erstellen wir so eine Funktion mit Visual Studio. 15. Section in Visual Studio: Ordnung Leute, also das ist es wirklich für diesen Abschnitt, wir haben uns angeschaut, wie wir Visual Studio 2022 oder 2019 mit Azure einrichten können , die sich auf Sets beziehen. Also haben wir als Workload installiert und das ermöglicht es uns, unsere Funktionen zu erstellen. Und das ist wirklich nur eine Funktion nach oben. Sie sehen also hier, dass jede Funktion, die wir in diesem Projekt erstellen würden , eine eigenständige Datei sein würde , die eine Funktion ist. Wenn wir das einsetzen, was wir später tun werden. Das wird nur unsere Füße nass machen. Aber wenn wir dieses gesamte Projekt bereitstellen, wird es wirklich als Funktion mit verschiedenen Funktionen bereitgestellt. Wenn wir eine Reihe von Dingen haben, die Sie erreichen möchten , und eine Funktion pro Aufgabe, dann haben wir ein Projekt mit jeder Funktion für die Aufgabe, eine Setup-Konfigurationen, die alle diese Funktionen regeln interagieren miteinander und wahrscheinlich mit jedem anderen Dienst, den sie benötigen, und jedem Drittanbieterdienst bei dieser einen Bereitstellung werden durchgeführt. Wenn wir wiederkommen, werden wir uns ansehen, wie Sie Visual Studio-Code verwenden können , um Ihre Azure-Funktionen zu entwickeln. 16. Verwendung von Azure Function: Alles klar Leute, also lasst uns gleich darauf eingehen für diesen Abschnitt, in dem wir die Azure-Funktionen mit Visual Studio Code sowie den Kern-Tools besprechen werden die Azure-Funktionen mit Visual Studio Code . Also bin ich hier auf einem pH-Wert, wir arbeiten mit einer 0 Funktion Kern-Tools ist die Überschrift, damit Sie dorthin gelangen können, Sie können einfach Ihre Foam Shedding Core-Tools googeln, und es ist die Microsoft-Dokumentation Ciceronian, Die Kern-Tools ermöglichen es uns, Funktionen lokal zu entwickeln und zu testen. Dies ist also eine bessere Option als Visual Studio, da es plattformübergreifend ist. Es erstellt also eine Laufzeit auf Ihrem Computer, um zu simulieren, wie die Laufzeit der 0-Funktion aussehen muss. Und dann können Sie sich natürlich lokal entwickeln und testen , bevor Sie veröffentlichen. Natürlich können Sie dies erneut tun, wenn Sie dies besuchen , aber das ist nicht immer eine Option, die auf Ihrem Betriebssystem und anderen Einschränkungen basiert Ihrem Betriebssystem und , die Sie möglicherweise haben. Was wir mit den Kernwerkzeugen machen können, wenn wir nach unten scrollen, sehen wir die verschiedenen Versionen. Also verwende ich jetzt Version vier, weil ich natürlich dotnet sechs Aufzählungszeichen verwende, basierend auf dem, auf dem du feststeckst oder auf welcher Version von Dotnet auch immer, vergewissere dich, dass du die richtige Version verwendest der Kernwerkzeuge für die Installation. Wir haben die Anweisungen für Windows, Mac OS und Linux, oder? Basierend auf Ihrem Betriebssystem verwenden Sie also das , was Sie benötigen. Ich bin unter Windows, ich werde das 64-Bit-Gerät verwenden , das den typischen Windows-Installer startet , an den wir gewöhnt sind. Und wir können einfach weitermachen und jedes Mal auf Next klicken und es installieren lassen. Und während das im Hintergrund passiert, werde ich nur zeigen, bis sie auch zu den Kern-Tools von GitHub gelangen können . So können Sie zum Azure-Projekt gehen und sich eher auf Azure Functions- oder Azure-Konten freuen , Andrew for Azure Function Kerntools als ihre Funktionen Kerntools. Und dann, dass diese Installationsanweisungen haben , je nachdem was immer Sie stecken, wahrscheinlich ein bisschen mehr Informationen, als Sie in der Microsoft-Dokumentation leicht sehen würden . Diese Option existiert also auch. Niemand sagt fertig, ich werde einfach meinen Visual Studio-Code starten. Und was ich normalerweise mache, wenn ich ein neues Projekt erstellen muss , ist, dass ich einfach einen neuen Ordner erstelle. Ich habe irgendwo auf meinem Computer einen neuen Ordner erstellt und geöffnet. Und ich gehe davon aus, dass Sie mit Visual Studio Code vertraut sind , aber wenn nicht, klicke ich normalerweise einfach auf Ordner öffnen und dorthin navigieren, wo ich möchte, um den Ordner zu erstellen und dann benutze den Ordner , den ich gerade erstellt habe. Und das ist es, was mein Projekt erzeugt. Ich werde alle meine 0 Funktionen ohne verwandte Operationen ausführen. In dieser Schnittstelle. Lassen Sie mich das einfach ein bisschen größer machen, damit wir es sehen können. Das nächste, was ich tun wollte, ist ein Eingabeaufforderungsfenster zu öffnen. Wenn Sie also in Linux sind, wenn Sie in Scheint sind, unterscheiden Sie sich vielleicht von Hawaii, ich benutze es, aber am Ende des Tages können wir uns alle einig sein, dass die Eingabeaufforderung auf jeder Plattform sehr ähnlich aussieht allen Befehlen, die ich hier verwende, werden das Betriebssystem verwendet werden, das Sie zur Überprüfung verwenden. Nun, zuerst habe ich zu dem Ordner navigiert , in dem ich weiß, dass mein Projekt ist. Und dann habe ich es nicht gesehen. Und dort haben wir überprüft , ob die Kern-Tools erfolgreich installiert wurden. Also bekommen wir dieses nette Besondere unerzählt. Und dann haben wir die gesamte Dokumentation rund um die verschiedenen Befehle, die wir ausführen können. Hier sehen wir, dass Unit eine neue Funktion im aktuellen Ordner erstellen und ein Git-Repo initialisiert. Also lasst uns das versuchen. Also habe ich es durchgemacht, wenn UNC Platz drin ist. Und dann werde ich aufgefordert, die Laufzeit auszuwählen. Also wollte ich natürlich die Dotnet-Laufzeit aufteilen , da wir C Sharp verwenden und es niedrig machen, also macht es seine Sache. Ich sehe hier, dass es in den Dateien im Hintergrund gefüllt ist , während es sein Ding gemacht hat. Nein, ich habe denselben Befehl innerhalb des Terminals ausprobiert denselben Befehl innerhalb , der in Visual Studio-Code integriert ist. Und wie Sie sehen können, habe ich einen Fehler. Also hatte ich gehofft, dass wir alles aus dem Terminal machen könnten alles aus dem Terminal statt Visual Studio-Code. Aber es gibt eindeutig einige Einschränkungen , und das ist kein Problem. Wir müssen also nur verstehen , welches Tool für Watt verwendet werden kann, wenn wir es brauchen. Ein Blick rüber auf den Fuzzer wurde geschaffen. Wir haben diesen Thought VS-Codeordner , der eine Erweiterungsdatei enthält, nur um sicherzustellen, dass die Azure-Tools oder die 0-Funktionstools installiert sind, um uns die bestmögliche Erfahrung zu bieten Visual Studio-Code. Wir haben auch den Gitignore. Es hat die CSV-Datei erstellt , mit der wir vertraut sind, und die anderen beiden JSON-Dateien, die ebenfalls bereits vertraut waren . Wenn ich eine neue Funktion wollte und nur eine Notiz, denken Sie daran, dass wir uns zur Laufzeit auffordern, als wir func init gemacht haben . Möglicherweise möchten Sie also nicht unbedingt eine dotnet.net-Laufzeit. Möglicherweise möchten Sie eine pünktliche Bestellung oder eine Python-Laufzeit basierend auf Ihrer Verzerrung zu Ihrer bevorzugten Programmiersprache und -umgebung. Und das ist vollkommen in Ordnung. Tatsache ist, dass es viele verschiedene Sprachen unterstützt. Ich konzentriere mich nur auf Dotnet , weil ich einen Windows-Computer habe. Und wenn du ein Mock benutzt hast und das ist keine wirkliche Entschuldigung. Ich sage nur, dass ich mich auf dotnet konzentriere , weil wir das für diesen Kurs tun. Wenn ich also eine neue Funktion will, benutze ich das, wenn du den Befehl nicht wieder siehst und dann würde ich New sagen. Und wenn Sie sich nicht sicher sind, können Sie immer wieder nach oben gehen und sich die Befehle ansehen , die es mir ermöglichen aus der Liste auszuwählen, welchen neuen Typ R, welche Vorlage ich für meine neue Funktion wünschen würde. Also werde ich mich für einen entscheiden , den wir vorher noch nicht gemacht haben, diesen kleinen Cosmos DB Trigger. Das schaffe ich. Drücken Sie die Eingabetaste, dann wird gesagt wie der Name b sein soll. Ich habe Funktion Cosmos DB ausgelöst. Und wenn ich dann die Eingabetaste drücke, wird es dann weitermachen und seine Magie machen. Und im Hintergrund sehen Sie dann das entsprechende Datei-Pop-up in Ihrem Visual Studio-Code. Das fasst das ganze Wochenende zusammen Verwenden Sie die Azure-Core-Tools und die Befehlszeile, um den Prozess zu starten. Jetzt verwenden Sie Visual Studio Code möglicherweise nicht als Editor. Sie verwenden vielleicht einen anderen Editor, aber für die Verwendung der Kern-Tools können Sie hier tatsächlich alles richtig machen. Und selbst wenn Sie Notepad Plus, Plus verwenden, könnten Sie einfach alle Dateien bearbeiten, die im Ordner hinterlegt werden die im Ordner hinterlegt , sobald Sie Ihre Befehle hier ausführen. Wenn wir also wiederkommen, werden wir uns mit der Verwaltung des Projekts befassen und nur Visual Studio Code verschmelzen. 17. Visual Studio Code verwenden: Alles klar Leute, also werden wir Visual Studio Code verwenden , um eine Funktion von Grund auf neu zu starten. Und wir werden uns die verschiedenen Tools und verschiedenen Nuancen ansehen und verschiedenen Nuancen , die es von der Verwendung der Kern-Tools und Visual Studio selbst unterscheiden . Also lasst uns das sagen, lasst uns anfangen. Das erste, was Sie sicherstellen möchten, dass wir dies bereits erwähnt haben, aber ich werde es noch einmal erwähnen. Stellen Sie sicher, dass Sie die Azure Functions-Erweiterung installiert haben . Wissen, was ich habe, ist die Azure Tools-Erweiterung , mit der mitgeliefert wurde Es ist ein Erweiterungspaket. Es kam also mit einer Reihe von Azure-verwandten Erweiterungen. Und das habe ich einfach gemacht, weil ich ein paar Azure-Entwicklungen mache. Ich bevorzuge es, sie einfach zu haben, wenn ich bereit bin , dann zu der Zeit auf die Jagd zu gehen. Wenn Sie jedoch nicht den ganzen Park wollen, kein Problem. Sie können einfach nach der Azure Functions-Erweiterung suchen , indem Sie einfach hier nachsuchen. Und dieser wird Ihnen nur das geben , was Sie brauchen, um sicherzustellen , dass Sie Ihre Azure Function-Entwicklung durchführen können . Das Durchlesen der Dokumentation ist eigentlich ziemlich informativ und es zeigt Ihnen, wie Sie sie installieren und einrichten und ausführen und bereitstellen können. Wenn die Zeit reif ist. Das Emblem in der Dokumentation unterscheidet sich geringfügig von dem Emblem, das ich zumindest zum Zeitpunkt dieser Aufnahme auf dem Bildschirm habe . Aber das ist in Ordnung. Ich vermute, dass sie sowieso sehr ähnlich arbeiten werden. Also klicke ich einfach darauf als deinen Abschnitt und dann kann ich alle Funktionen anzeigen. Ich habe einen brandneuen Ordner erstellt , den Sie auch bei Bedarf tun können, aber lassen Sie uns das einfach durcharbeiten. Hier habe ich also die Möglichkeit , ein neues Projekt zu erstellen, eine neue Funktion zu erstellen, wenn ich bereits in unserem Projekt bin , und die Funktion bereitzustellen, was das gesamte Projekt wäre. Also fange ich einfach mit einem kreativen Projekt an. Was mich dann fragt, seltsam, möchten Sie dieses neue Projekt so platzieren, dass Sie zum Durchsuchen gehen und dann einen neuen Ordner erstellen können , wo immer es ist. Ich habe bereits einen Ordner namens dein Telefon erstellt , Seans Fundamentals-Code. Es ist im Grunde genommen an der gleichen Stelle wie die vorherige , an der ich die Kern-Tools verwendet habe, wird uns sagen , dass wir das auswählen. Und dann haben Vorfälle mich gebeten, eine Sprache auszuwählen. Ich werde mich mischen. Es ist darüber. Wir haben es die ganze Zeit mit C-Sharp zu tun, hauptsächlich weil es Windows war und weil ich Visual Studio benutze und wir Visual Studio in Zukunft verwenden werden , beide in einer Open-Source-Sitzung. All dies sind Optionen, mit denen Sie jemanden haben können. Typoskript macht etwas anderes, dann wollen sie eine Vorlage für die erste Funktion, die wir überspringen können die dem Erstellen des leeren Projekts in Visual Studio und dem späteren Hinzufügen der Funktionen ähnelt . In dieser Situation fange ich einfach mit einem HTTP-Trigger an. Also lass mich das machen. Ich belasse den Standardnamen, drücke die Eingabetaste und mache ihn anonym. Und mit all diesen Donuts erschaffen. Und dann hat es Gitter in einem Projekt fertiggestellt und dann hat es eine Menge Dinge gemacht. Und es hat für mich ein Git-Repository mit all diesen Standarddateien initialisiert , wenn ich die Projektliste hochgehe, einen VS-Codeordner habe, der die Erweiterungen und Initialisierungsdateien enthält , um sicherzustellen, dass ich Die beste Erfahrung bei der Verwendung von Visual Studio Code, ich habe einen Ordner für den HTTP-Trigger, der die Funktion dot js hat. Wir wissen bereits, was diese Datei weit ist, wir haben sie schon einmal gesehen. Es hat auch diese Indexdateien. Im Gegensatz zur C-Sharp-Datei, die eine Punkt-CSS-Datei enthält, habe ich mich für TypeScript entschieden, also ist es keine TSV-Datei, die wirklich nur eine gekapselte JavaScript-Datei ist. Wenn Sie Tür kennen, keine Entwicklung oder Winkel und so, dann Code TypeScript sieht so ziemlich aus, es ist nur eine JavaScript-Version dessen, was wir bereits wissen. Es nimmt die Anfrage als HTTP-Anfrage an. Es macht seinen Kontext, der der Kontext der Funktion ist, in der protokolliert wird. Und dann holen wir uns den Namen entweder aus der Abfragezeichenfolge oder dem Body. Dann drucken wir aus, ob die Daten zurückgekommen sind oder nicht. Wir haben eine Akte. Wir haben eine Funktion ignorieren Datei, ich habe eine Geschenk-Ignore-Datei, und dann haben wir die Host-JSON-Dateien. Sie sehen hier also, dass die Laufzeit beim letzten Mal genagt wird , wenn sie in dieser Paketdatei Punkt wäre. Und wir haben eine TS-Konfigurationsdatei. Alles klar. Das sind alle Akten , die wir aus der Box holen. Ich werde einfach weitermachen und diesen jemanden ausführen, um mit dem Debuggen zu beginnen. Möglicherweise sehen Sie, dass es ein paar andere Dinge auf Ihrem Computer installiert. Natürlich ist es unerlässlich, dass die neueste Version von Node in dieser Situation bereits installiert ist , damit dies tatsächlich lokal ausgeführt wird, da offensichtlich von Übelkeit abhängt und Node und npm installiert werden müssen deine Maschine. Wir sehen hier in der Konsole, dass wir die URL zu unserer Funktion haben. Wir halten den Testis nicht oder können entweder einen Browser benutzen oder Postman benutzen. Um zu verfälschen, bitten Sie jemanden, sich für einen Postboten zu entscheiden, ich werde die neue URL eingeben, also ist es was auch immer Sie, oder er gibt Ihnen hier, Slash API-Schrägstrich HTTP-Trigger eins. Und dann habe ich die Abfragezeichenfolge für den Namen eingegeben. Also bin ich gegangen, um das zu schicken. Du siehst hier, dass das Logo und der Hintergrund verrückt geworden sind, oder? Also hat es die Aktivität heruntergekommen. Und natürlich haben wir diese Antwort als 200 OK Antwort bekommen. Das ist so ziemlich für die Verwendung von Visual Studio-Code Debuggen der Formation in Visual Studio Code. Und dann können wir natürlich einsetzbar sein. Wir haben uns das alles angeschaut. Wir werden die gesamte Entwicklung einer ganzen Reihe von Funktionen in wenigen durchlaufen , aber wir machen es nur Schritt für Schritt? Nein. Kurz bevor ich weitermache, kannst du weitermachen, wenn du willst, aber du musst nicht unbedingt Laufzeit der Kernwerkzeuge einsetzen. Es ist zwingend erforderlich, dass Sie wissen, welche Version der Core Tools Laufzeit im Vergleich Switchd-Version von Dotnet Sie verwenden. Dotnet Six ist zum Zeitpunkt dieser Aufnahme noch relativ neu. Die Werkzeuge werden nicht immer mühsam und 24 Wochen sein. Also habe ich hier die gleichen Schritte durchgemacht und ein neues Projekt erstellt, aber diesmal ein neues Projekt erstellt, habe ich mich für C-Sharp entschieden. Und Sie sehen hier, dass Sie verwenden können.net Core drei sind dotnet F5. Ich habe mich für dotnet F5 entschieden, und dann habe ich genauso einen HTTP-Trigger gemacht. Also habe ich natürlich gesagt, dass all dies eine brandneue Funktion öffnet , indem ich den Ordner brenne, tut mir leid. Verwende einfach alles hier um. Das ist eine C-Sharp-Funktion, die genauso aussieht wie das, was wir gesehen haben. Wenn ich also nur einen Lauf mache, wollte ich nur ruinieren und sicherstellen, dass meine Laufzeit ist, ich würde aufhören, ein Dotnet-Projekt mit Visual Studio Code zu erstellen . Es war wie gesagt, das Werkzeug könnte nicht unbedingt stabil sein. Es muss zu der Zeit sein, aber hoffentlich sind all diese Nuancen weg, wenn Sie diesen Kurs machen . Also ja, es war erfolgreich. Hier sehen wir, dass die Laufzeit um ist und ich meine C-Sharp Beast-Funktion erfolgreich debugge. Ich sehe all das, um zu sagen, dass vielleicht, wenn Sie mit einem Kern-Tools arbeiten und Sie möglicherweise in einer Version sind und dann versuchen Sie es in Visual Studio Code zu bearbeiten und dann versuchen, im Debug-Modus zu laufen Visual Studio-Code, Sie haben möglicherweise nicht unbedingt die beste Erfahrung wenn die Werkzeuge und die Abneigung nicht identisch Möglicherweise erhalten Sie seltsame Fehler wie fehlende Konfigurationen und ähnliches. Also weise ich nur darauf hin, dass es für den Fall, dass Sie so enden, es ist besser, an einem Ort anzufangen und alles an einem Ort zu machen. Wenn Sie also mit Visual Studio-Code beginnen , alles da. Dasselbe gilt für Visual Studio usw. all das erledigt und gesagt wurde, nenne ich es in dieser Lektion beendet. Ich hoffe, Sie haben gelernt und vor Ort ausgerüstet und bereit für das bevorstehende Projekt. 18. Abschnitt mit Azure-Funktionen in Visual Studio Code: Alles klar Leute, so weiter. In diesem Abschnitt haben wir uns alternativen Tools zu Visual Studio befasst. Visual Studio ist natürlich eine große Umfrage für Biest, aber es ist nicht immer die beste oder einzige Option für manche Personen. Wir haben uns angeschaut, dass Sie tatsächlich die Kern-Tools bekommen können . Du kannst es von dort aus drehen. Sie können einen normalen Texteditor und ein paar Befehle in der Eingabeaufforderung verwenden. Und Sie können zumindest eine gute Erfahrung mit der Entwicklung Ihres Telefons machen. wird gezeigt, dass es bereitgestellt und mit ihnen interagiert wird. Wir haben uns auch Visual Studio Code angeschaut, sehr kritisch ist , was Visual Studio Ihnen bietet. Und es verfügt über hervorragende Toolsets, eine Intelligenz, die Ihnen bei Ihren Entwicklungsaufgaben hilft . Es erlaubt es, genauso zu debuggen, wie wir uns ein paar Dinge leihen. Es ist eine sehr gute, wie ich schon sagte, für eine Sekunde. Wenn Sie kein Visual Studio haben oder das keine Option für Sie ist. Visual Studio Code ist eine hervorragende Ressource, die verwenden können, wenn Sie Ihre Azure-Funktionen entwickeln möchten. 19. Azure und langlebige Funktionen: Hey Leute, willkommen zurück. In diesem Abschnitt werden wir uns einige andere Funktionen oder Funktionen ansehen einige andere Funktionen oder Funktionen , die wir wahrscheinlich noch nicht behandelt haben. Also ging ich etwas tiefer in die Eingabe- und Ausgabebindungen ein. Wir haben das früher angesprochen, aber wir werden einige praktische Beispiele durchgehen. Wir werden uns auch Durable Functions und Kunstgeschichte ansehen . Und wir werden uns ansehen, einen Handler einzurichten. Also werden wir Visual Studio-Code für die meisten dieser Aktivitäten verwenden . Und Sie werden sehen, wie Sie Funktionen ein bisschen robuster machen können. Und das ganze Wochenende lassen sie mit anderen Diensten außerhalb eines Auslösers oder einer Ursache interagieren . Also bleib hier. Wir haben einige Dinge zu erledigen. 20. Einfuhrund Input: Ordnung Leute, also haben wir uns in dieser Lektion Input- und Output-Bindings angeschaut . Ein- und Output-Bindings für zu viel beziehen sich buchstäblich auf Input und Output, eine Quelle für Eingabe und Ziel für eine Ausgabe. Also habe ich bereits ein brandneues Projekt erstellt. Ich bin hier zur Azara-Registerkarte gegangen. Und dann sagte ich, erstellt ein neues Projekt und es zeigt einen Knoten oder eine TypeScript-Vorlage für dieses spezielle. Also benutzen wir das einfach hier. Nein, mir ist mit den Werkzeugen klar , dass einige der Dinge, die wir durchmachen werden, verschiedene Dinge sehen werden, basierend auf der Projektvorlage, die Sie die Funktionsweise der Werkzeuge verwenden. Denken Sie daran, vieles davon ist brandneu. Im Laufe der Zeit könnte es also gleich gehorcht werden und nicht erleben, was ich als potenzielle Lücke hinweisen könnte. Ich wähle jedoch diesen Weg des geringsten Widerstands weil wir einen Assistenten erhalten wenn wir eine Eingabebindung hinzufügen möchten. Wenn wir diesen Assistenten erhalten und die entsprechenden Informationen darüber eingeben , was zu tun ist, wird ein Block von Konfigurationscode generiert, der global ist. Egal welche Vorlage, auch wenn Sie den Assistenten selbst nicht erhalten, können Sie immer noch beobachten, ob Sie unserem Konto nicht folgen möchten, folgen Sie basierend auf dem ausgewählten Vorlagentyp. Wenn der Code jedoch generiert wird und wir überprüfen, ob Sie ihn tatsächlich in Ihre eigene In-Dot-JSON-Datei stecken und nur eine Szene fortsetzen können. An diesen Punkten. Ich werde sie alle auf eine andere Sache hinweisen, die wir für diese Aktivität benötigen ist der Cosmos DB-Speicheremulator. Sie können dies durch eine einfache Google-Suche erhalten , nur die Google-Suche, einen 0 Cosmos DB-Emulator, zur Microsoft-Dokumentation gehen und Sie können diese auf Ihrem Windows-PC installieren. Wissen Sie, wenn Sie diese Option nicht haben, können Sie tatsächlich zu Azure gehen und den Cosmos DB-Dienst selbst bereitstellen . Und das ist ziemlich einfach. Die sehr ähnlichen Schritte wie ich im Emulator machen werde. Wir können unabhängig davon im Dashboard repliziert werden . Also verwende ich den Emulator für diese Aktivität. Cosmos DB wird also als unsere Input-Bindung dienen. Und wenn wir dann bereit sind für den Ausgabeteil davon, stellen wir eine Azure-Tabelle oder wenn wir dort ankommen, können wir es anhand der Aktivität herausfinden , die ich hier nur nach Gehör spiele. Wenn Sie den DB-Emulator installiert haben und starten und gestartet haben, wird im Browser angezeigt, der ungefähr so aussieht. Und Sie würden sehen, dass es Ihnen sagt es läuft, gibt Ihnen den URI, gibt Ihnen den Primärschlüssel und es gibt Ihnen die Parameter-Verbindungszeichenfolge. Das werden wir alles brauchen. Sie können auch zum Explorer gehen. Sie können eine neue Datenbank erstellen und dort verschiedene Container erstellen. Ich werde das entfernen, weil ich es von Grund auf neu mit euch machen wollte . Beginnen wir also damit, diese Verbindungszeichenfolge zu erhalten und dann wieder zu unserem Projekt zu springen. Was wir tun müssen, ist, das Projekt noch über diese neue Verbindungszeichenfolge zu Ihrer lokalen JSON-Datei settings.js springen zu lassen diese neue Verbindungszeichenfolge zu Ihrer lokalen JSON-Datei settings.js springen . Sie hier sicher, dass der Azure Web Jobs-Speicher Verwendung von Entwicklungsspeicher gleich true sieht. Was auch immer die in der Laufzeit gezeigte Form ist, wir wissen, was dieser Zweck oder der Zweck davon ist. Aber lassen Sie uns unsere Verbindungszeichenfolge einsetzen. Also nenne ich es einfach Cosmos DB-Verbindung. Dann sehe ich einen Doppelpunkt und lege dann den Wert ein, der die primäre Verbindungszeichenfolge ist , die wir gerade vom Emulator bekommen haben. Gehen wir also zurück zu unserem Emulator und erstellen unsere Datenbank. Also im Explorer der neuen Datenbank, und wir werden sagen, dass wir einen Blog erstellen. Was wir tun werden, ist sicherzustellen, dass wir die WIG für den Bereitstellungsdurchsatz haben. Wir lassen es auf automatischer Waage. Und das Coole an den Emulatoren, dass, was auch immer Sie hier als Einstellungen einrichten, wenn Sie die MLA-Version machen, manchmal eine genaue Schätzung erhalten wie viel es in einem kosten würde besonderer Grund auf Azure. Es ist also ein gutes Werkzeug für die lokale Entwicklung und das Testen und den Nachweis von Konzepten. Wir nennen es Blog. Und dann geben wir dir die neuen Container. Klicken Sie also einfach auf neuen Container und wir wählen die Container-ID aus. Container wären Posts. Und guter Partitionsschlüssel, Partitionierungsschlüssel hier präsentiert, würde den zu verwendenden Indexwert indizieren. Das wird Blog-ID sein. Also klicken wir einfach auf Okay. Und wenn wir dann Beiträge ablegen und uns Elemente ansehen, die Sie hier sehen, haben Sie die ID des Beitrags und die Blog-ID ist der Partitionsschlüssel. Während wir hier sind, werden wir in einen Blogbeitrag schreiben und Sie können hier ein paar Blogbeiträge, x2i-Contest Bullet, eintragen . Ich gebe nur einen Ausweis ein, Blog-ID, beide sind eine. Der Titel, der Inhaltskommentarblock, nur etwas, um ihn aussehen zu lassen. Wie sieht unser Dokument wirklich in Cosmos DB aus. Du kannst einfach weitermachen und das machen. Sie können einfach auf neues Element klicken. Sie erhalten diesen bearbeitbaren Abschnitt und klicken dann auf Speichern, wenn Sie fertig sind. Und am Ende der Operation erhält Ihr Datensatz noch mehr Metadaten. musst du dir keine Sorgen machen. Aber so sollte der Rekord in Cosmos DB aussehen. Lassen Sie uns zu unserer Funktionspunkt-JSON-Datei übergehen und die Konfiguration hinzufügen. Jetzt gibt es zwei Möglichkeiten , Konfigurationen hinzuzufügen, und ich mache es auf manuelle Weise oder zeige Ihnen zumindest den manuellen Weg, oder zeige Ihnen zumindest den manuellen Weg weil basierend auf den Werkzeugen und basierend auf der Projektvorlage dass Sie sich möglicherweise gespuckt haben, haben Sie diese Option möglicherweise oder auch nicht. Zum Beispiel verwende ich die TypeScript-Funktionen, das Projekt oder die Vorlage. Wenn ich mit der rechten Maustaste klicke, sehe ich dort die Option, Bindung hinzuzufügen. Und was das macht, ist, dass ein kleiner Assistent angezeigt wird, der es mir ermöglicht, die verschiedenen Konfigurationspunkte basierend auf der Art der Konfiguration, die ich mache, auszufüllen die verschiedenen Konfigurationspunkte basierend auf der Art der . Nicht alle Projekttypen haben das , weil ich bemerkt habe, dass es nicht in einem C-Sharp-Funktionsprojekt vorhanden ist oder versucht hat. Also zeige ich dir einfach, wie es aussehen würde. Im Allgemeinen, ob Sie TypeScript, Python, Java, C-Sharp usw. verwenden . In Form von JSON sind hier alle Bindungen konfiguriert. Also haben wir hier, wir haben einen für den N. Wenn Sie es also sehen, bedeutet das, dass es eine Eingabebindung ist. Wenn Sie sehen, bedeutet das eine Ausgabebindung. Wir hatten also bereits zwei standardmäßig, nirgends haben wir noch einen hinzugefügt. Sie können also einfach das Komma hinzufügen und einen neuen Objektblock starten. Und dann ist der Typ Cosmos DB Richtung im Namen ist Eingabedokument. Du könntest das ändern, du könntest es Blogs nennen , was auch immer es ist, wie dieser Name eine Rolle im Code selbst spielen wird . Also nenne ich es das Eingabedokument. Wenn Sie den Standardwert verwendet hätten, wäre der Assistent auch auf das Wort oder das Namenseingabedokument eingestellt. Der Datenbankname lautet jedoch Blog. Wir haben eine Sammlung namens Posts erstellt. Also Datenbankname, Sammlungsname. Dann haben wir Verbindungszeichenfolge sitzen. Dies wird den gleichen Namen haben wie die Klinik gezeigte Stream, den wir zuvor erstellt hatten. Und dann haben wir die ID und die Partitionsschlüsselknoten-ID. Hier erfahren Sie, welche Bindungsparameter ich verwenden sollte , um die ID-Werte zu erhalten. Wenn ich also eine Abfrage sehe, ist dies zu diesem Zeitpunkt wie ein Superglobal. Um diese Abfrage zu sehen, wird der Abfragezeichenfolge ähnlich sein , die eingeht. Denken Sie also daran, dass die Standardvorlage für eine von HTTP ausgelöste Funktion die Anforderungspunkt-Abfrage den Variablennamen enthält. Oder in C-Sharp würden wir uns die Anfrage ansehen. So ziemlich eine Abfrage ist genau das, was sie als Abfragezeichenfolgenvariable erkennt. Eine Abfragezeichenfolge sucht also nach einer Variablen namens ID für den Partitionsschlüssel, wir verwenden auch ID-Geschichten und dasselbe, nein, sie befinden sich beide in geschweiften Klammern weil es eher wie eine Bindung ist. Bindungsparameter im Gegensatz zum Wert. Das sind die verbindlichen Parameter, die wir wollen. Nein. Sie könnten hier tatsächlich wie eine SQL-Abfrage als einen der Schlüsselwerte angeben SQL-Abfrage , die es Ihnen tatsächlich im Kontext einer Cosmos DB und potenziell anderer datenbankbezogener Eingabevariablen ermöglichen würde einer Cosmos DB und , Input-Bindung, Entschuldigung, Sie könnten Ihre SQL-Anweisung tatsächlich hier schreiben , um sie auf Wunsch kompliziertere SQL-Anweisung zu erhalten. Aber in diesem Fall halten wir es einfach. Alles, was wir wollen, ist die ID einzugeben. Es sollte gehen und es für uns von Cosmos DB abholen, und dann können wir es danach bearbeiten. Jetzt gebe ich dir einfach eine kurze Demo wie der Assistent aussehen würde. Sie klicken also einfach mit der rechten Maustaste auf die Funktion in der Liste. Sagen Sie beim Binden, wählen Sie aus, Sie wählen den Typ aus. Lassen Sie mich hineinzoomen, damit Sie besser sehen können. Und dann, wie gesagt, verwenden wir Cosmos DB, Sie würden den Namen wählen, also belasse ich ihn als Standard. Sie wählen den Namen der Datenbank wählen den Namen der Sammlung aus. Sie wählen aus dem Connect die Verbindungszeichenfolge aus Ihren Einstellungen und geben ihr dann die Dokumentkennung. Das wäre also so verbindlich gewesen. Es wird also Abfrage gesagt. Nur um ihn seltsam mit dem Partitionsschlüssel zu sehen, hätte ich gesagt: Woher bekomme ich den Partitionsschlüsselwert? Weil ich die ID für beide für den Partitionsschlüssel verwende. Deshalb sage ich Abfragepunkt-ID. Wenn es jedoch ein Fall war, in dem ich die ID getrennt von einem Partitionsschlüssel übergeben sollte . Dann könnte ich Schlüssel sagen oder was auch immer es ist. Was auch immer der Name des Parameters ist, den ich als Partitionsschlüssel erwarte, würde ich hier angeben. Und dann gehst du so ziemlich einfach durch und dann drücke ich Escape, um abzubrechen, wenn ich nicht möchte, dass es weitergeht und fortfährt. Aber sobald ich Angst davor hätte, dass die SQL-Abfrage diesen Block generiert hätte. Unabhängig davon. Es hätte auch die SQL-Abfrage eingefügt und wäre leer gewesen. Und ich würde raten, dass Sie das einfach entfernen, weil ich gesehen habe, dass es Probleme verursacht. Die Probleme sind nicht wirklich klar. Wenn Sie den Assistenten verwendet haben, hätten Sie eine SQL-Abfrage erhalten. Und es wäre leer gewesen. Mein Rat wäre, wenn Sie keine Winde haben, entfernen Sie es einfach, Sie können mit weniger Besorgnis fortfahren. Jetzt, da wir Cosmos DB konfiguriert haben, haben wir die Bindung konfiguriert, wir haben unsere Verbindungszeichenfolge konfiguriert, lassen Sie uns Code schreiben und diese Methode für Sie umgestalten. Und ich wollte auf alle Änderungen hinweisen. Ich meine voll, du kannst einfach alles zwischen dem ersten Kontext-Log und allem bis zum letzten entfernen , der schließenden Klammer, richtig, also einfach leer oder die Funktion. Es sieht also so aus. Entschuldigung. Sollte so aussehen. Wenn Sie mit dem Leeren fertig sind, können Sie dies auf Wunsch belassen. Kein Problem. Die erste Änderung würde an unseren Funktionsparametern erfolgen. Also haben wir die Kontexte, wir haben die Bitte. Ich weiß, dass ich die Eingabedokumente hinzufüge. Also dieses Eingabedokument, und weil ich TypeScript verwende, ist es sehr stark eingegeben. Aber es erlaubt Ihnen, jemanden verlieren zu können, um hier etwas zu sehen. Aber wir könnten bei Bedarf einen Datentyp angeben, aber ich lasse ihn einfach wie alle Kontextanfragen. Ich weiß, dass ich einen Eingabepunkt hinzufüge, tut mir leid. Und dann, welcher Code von früher da war. Nein, innerhalb des Hauptteils unserer Funktion wird Herbst sagen wenn nicht Dokument eingeben, dann sagen wir, dass wir diese ID nicht finden konnten, dann können wir diese Nachricht protokollieren, aber dann antworte ich . Also Kontexte Punktreaktion oder Risiken, ich gehe davon aus, dass das bedeutet, dass die Antwort gleich ist. Und dann können wir einen Statusmodifikator angeben, den Status. Und selbst beim Testen in früheren Teilen dieser Kursszene, wo wir sie in einem falschen Wert übergeben haben und wir immer noch 200 bekommen haben. Okay, obwohl es den Wert nicht gefunden hat, der da sein sollte , was falsch ist. Http-Antworten müssen sehr spezifisch sein. Wenn Sie also die API-Entwicklung aktivieren, können Sie dies zu schätzen wissen. Wenn nicht, dann wissen Sie einfach, dass sie spezifisch sein müssen. Sogar mein Sagen 5400 hier ist falsch. Und so bedeutet eher ein 404404 nicht gefunden. Schließlich sehe ich, dass es nicht angerufen wurde. 500 wäre, wenn es ein schwerwiegender Fehler auf meiner Seite wäre, was in diesem speziellen Szenario nicht der Fall ist. Wenn nicht, geben Sie ein Dokument ein und nichts wurde hier bereitgestellt. Dies setzt sich also automatisch hin und achtet auf einen bindenden Wert, der durch die Anfrage eingeht . So viel ist die Bindung , die hier angegeben ist. Wenn kein verbindliches Valley durchkam, wenn dieser Bindungswert nichts in der Datenbank gefunden hat, denn was passiert ist, wenn er sieht , wird er automatisch zu Cosmos gehen DB und überprüfe alles, was noch einmal überprüft werden muss. Wenn Sie also nicht so ziemlich viel gefunden haben, wird es wissen, ob Sie etwas gefunden haben oder nicht, wenn es hier ist. Es ist in JavaScript, weil es im Grunde heißt, wenn nicht, dann sagen wir nicht angerufen, und dann antworten wir mit einem 404 und der Nachricht, sie wurde nicht gefunden. Das in der nächsten Zeile. Wir werden eine Antwort mit einer 200 sehen und der Text sollte den Inhalt enthalten , der sich in diesem Eingabedokument befindet. In Ordnung, denken Sie also daran , dass das nur der JSON-Block von JSON ist. Also lasst uns sehen , wie das aussieht. Also laufe ich, wie immer, ich werde Postman benutzen, um diesen Test durchzuführen. Also gebe ich diesen Parameter ein, diese Abfragezeichenfolge, ID ist gleich eins, und ich erhalte diese 200-Antwort mit dem Inhalt dieser Dokumentkennung, die nicht vorhanden war. Mal sehen. Ich bin zehn bestanden. Dann bekomme ich das vierhundertvierhundert Telefon im Nachrichten-Blogpost und habe nicht so viele Dokumente gefunden, wie Sie vielleicht hinzugefügt haben , die mit welchen IDs usw. einfach automatisch eingehen. Das ist der Zeitpunkt, an dem wir eine Eingabebindung sehen. Sobald die Methode ausgeführt wird, sollte ich mich an diesen bestimmten Wert binden. Und es dient dazu, diese bestimmte Ressource abzufragen oder mit diesem bestimmten Dienst zu interagieren. In diesem Beispiel sucht oder Eingabebindung nach einer ID gemäß unserer Konfiguration hier. Und sobald es diese ID sieht oder sobald sie aufgerufen wird, wird es zur Cosmos DB dreieckig um das passende Dokument zu erhalten. In Ordnung, lasst uns diese Denkweise fortsetzen und eine Ausgabebindungen hinzufügen. Also habe ich die Konfiguration bereits hinzugefügt und du kannst einfach weitermachen und das dort drin bringen. Also ein neuer Objektblock. Und dann ist der Typ diesmal Q, die Richtung ist Alt. Wir haben den Namen. Das ist der Standardname , der im Assistenten aufgetaucht wäre, der Name der Warteschlange, wir geben ihm einen Namen und dann die Verbindung, und dieses Mal benötigt er eine Speicherverbindung. Und wir haben den Azure Web Storage, Web Job-Speicher. Eine Verbindung dort? Nein, für den Kontext für das, worauf das alles hinweist. Wenn Sie diesen Azure Storage Explorer aufrufen, sehen Sie hier unter lokal und an ein Speicherkonto angehängt. Ein Speicherkonto ist also so ziemlich genau dort, wo Ihre Blobs hingehen würden. Und dann hat es auch Warteschlangen und Tabellen. Wir verwenden also die Hinweise , die in einem Speicherkonto erstellt werden. Natürlich ahmen wir es gerade nach. Wenn Sie dies auf Azure bereitgestellt haben, können Sie hier unten darauf zugreifen. Lokal haben wir es jedoch emuliert, damit wir zu den Cues und dem alten Q gehen können, sodass Sie dieses Q nicht erstellen müssen, wenn Sie die Befehle ausführen, die wir schreiben können. Wenn es noch nicht existiert, wird es tatsächlich weitergehen und es für Sie erstellen. Das ist das Schöne daran. Sie müssen es also jetzt nicht erstellen. Ich zeige Ihnen nur, wo Sie auf die Erstellung des alten Q achten sollten. Wenn Sie den Assistenten für diese Bindung durchgehen würden, lassen Sie mich Ihnen einfach zeigen, wie es schnell aussehen würde. Nehmen wir an, wir wollten ein Alt-Bindungs-Wu-Tools , das wir Queue-Speicher wünschen. Dann fragten sie uns nach dem Namen. Es wird also ein Ausgabewarteschlangenelement den Namen geben. Sie haben ihm wahrscheinlich keinen anderen Namen gegeben oder es spielt wirklich keine Rolle, denn dadurch wird sowieso nur ein neuer Warteschlangenabschnitt erstellt. Aber geben wir ihm einen anderen Namen. Und dann möchten wir auf die Speicherverbindungszeichenfolge verweisen , die, weil wir lokal arbeiten, die Entwicklungseinstellungen verwenden. Und dann könntest du fortfahren. Und dann wäre dieser gesamte Konfigurationsblock für Sie generiert worden. Wieder einmal haben Sie zwei Möglichkeiten, dies zu tun. Wenn der Assistent keine Option ist, können Sie sich immer einfach mit dieser Konfiguration vertraut machen . Schlüssel. In unserem Quartal wird eine Anpassung vornehmen. Wir befinden uns in dem Bereich , in dem wir unsere Blogbeiträge nicht finden. Wir senden nur eine Nachricht an die Warteschlange. Es wird nur diese Antwortnachricht an die Warteschlange senden . Also habe ich einen Kontext gesehen, Punktbindungen. Denken Sie daran, dass Kontexte Punktbindungen Kontexte sagen werden. Geh und suche nach allen Bindungen, die du hast. Und dann hol mir das Element der Ausgabewarteschlange. So nannten wir es hier. Dann möchte ich die Antwortnachricht in diese Warteschlange stellen oder was auch immer fehlschlägt. Du könntest also eine andere Botschaft schreiben. Es ist eine Messaging-Warteschlange, daher ist sie im Allgemeinen textbasiert. Das ist wirklich die einzige Änderung , die wir vornehmen müssen, wenn wir laufen und versuchen, einen Blogbeitrag zu finden, der nicht existiert. Und bisher habe ich mit zehn getestet. Wir würden sehen, dass wir die Antwort genauso zurückerhalten . Aber wenn ich zum Storage Explorer springe und in diesem Alt Q schaue, sehe ich die Nachricht oder die Nachrichten, die in der Warteschlange hinterlegt werden. Das ist ziemlich ein Loch. Und alt, Alt-Bindung, Output-Bindung würde funktionieren. Also ist die Eingabebindung im Grunde genommen Stein auf Uhren und sagt, wenn ich diesen Wert bekomme, werde ich automatisch einen Auslöser auslösen , um etwas abzurufen oder etwas zu tun. Und Output-Bindings ist, das werde ich an dieser Stelle in der Ausführung aussenden . So wie wir gesehen haben, dass Sie eine Reihe von Bindungsoptionen haben. Sie können eine SMS machen, Sie können ein Signal machen, unser Update, Hub-Update. Sie können ein Sün-Grid erstellen, bei dem es sich um einen E-Mail-Service handelt. Und du kannst HTTP machen, was wir gemacht haben. Das ist ein Problem, GTP-bindende Proteinmonate. Kontexte Punkt heben heißt im Grunde genommen im Kontext, geh und hole die Strahlen. So heißt es, es ist die Abkürzung für Antwort. Ich schätze, wenn du das umbenennen wolltest, wäre das alles, was nötig wäre. Das ist es also wirklich für Ein- und Ausgabebindungen. Wir brauchen zwei sehr einfache Beispiele. Und in diesen Beispielen haben wir uns auch verschiedene Tools von Drittanbietern angesehen, mit denen wir helfen können , die Hilfe bei unseren Interaktionen zu nutzen. Selbst in Visual Studio Code bin ich den ganzen Weg zum Emulator für die Cosmos DB gegangen. Aber sobald Sie das installiert haben, müssen Sie nicht unbedingt in das eigentliche Management-Screening gehen, um das eigentliche Management-Screening dies tatsächlich von hier aus unter der Datenbank ist Abschnitt in Visual Studio-Code, weil Sie gesehen hätten, wie Sie hier einen Emulator anhängen. Ich habe MICH tödlich angefasst. Es würde Sie fragen, ob es Kern oder eine DB für die Mongo-API für die Sie auswählen, und es würde automatisch die lokale Cosmos DB codieren. Das ist also ein netter, einfacher Weg zu einer 100, die eine Datenbank und die Sammlung von hier aus übernehmen und erstellen . Wir können auch die Verwaltung virtueller Maschinen durchführen, aber wir haben in diesem Kurs keine VMs. Und Sie können Ihre Funktionen von hier aus verwalten usw. also gibt es Tools. Sobald Sie verstehen, wie sie alle zusammenarbeiten, sollte es Ihnen gut gehen. Wenn Sie Probleme mit Ihrem Speicherkonto haben, was Sie vielleicht eines haben, würde ich Ihnen nur vorschlagen, dass Sie Ihren Storage Explorer aktualisieren und sicherstellen, dass es sich um die neueste Version auf Netzhaut handelt. Ich laufe 1 zu zwei. Ich war bei 1.170 einige Probleme weil sie seit 1 zu zwei einige Updates vorgenommen haben. Und Sie sollten den Azurit-Milliliter für die lokale Azure Storage-Entwicklung installieren, die niemand Zeit für diese Aufzeichnung installiert, Sie werden diese Probleme wahrscheinlich nicht haben. Aber wenn Sie mit einem älteren Toolset-Toolset arbeiten und dann nicht frischer installieren, würde ich Ihnen raten, einfach neu zu installieren , weil mich das erwischt hat. Erstens, der Speicher-Emulator wäre das, was mit der Originalversion des Storage Explorers geliefert hätte , aber das ist nicht veraltet, da Azurit das Neue ist und es hätte mit Visual kommen sollen Studio 2022. Für mich hat es jedoch nicht ganz so geklappt. Aus irgendeinem Grund verwende ich stattdessen die npm zur Installation. Sie haben also bereits npm oder Node JS es Version später installiert. Wenn nicht, kannst du weitermachen und es holen. Aber um mit den Aktivitäten Schritt zu halten, wenn Sie TypeScript verwenden, wissen Sie nur, dass Sie es bereits installiert haben sollten. Sie können einfach Ihre Eingabeaufforderung oder Ihre Konsole aufrufen und das Installationsprogramm ausführen , das es im Hintergrund installiert hat. Und dann möchten Sie einen Ordner an diesem Speicherort oder wo auch immer erstellen und dann diesen Befehl ausführen, damit Sie sicherstellen können, dass er im Hintergrund ausgeführt wird. Dies überschreibt den zuvor installierten Azure Storage Explorer-Emulator. Ich zeige Ihnen diese Dinge nur für den Fall, dass Sie Probleme stoßen, weil Probleme natürlich sind, aber es ist immer gut, die Lösungen zu haben. Sie können all das tun und dann Ihren Speicher-Explorer neu starten und dann sollte alles eine Verbindung herstellen können. Die Symptome, dass es nicht funktioniert, wäre, dass die Funktion nicht ausgeführt wird. Was du testen willst. Es wird pausieren. Und ein anderes Symptom ist, dass Sie, wenn Sie versuchen, sich mit dem Emulator zu verbinden darüber informiert wird, dass Verbindungen abgelehnt werden. Wenn Sie also diese Symptome bekommen, müssen Sie auf jeden Fall diese Updates einhalten. abgesehen ist das wirklich für Input- und Output-Bindings. Deshalb ermutige ich Sie zu erforschen, andere Funktionen zu erstellen, von denen Sie denken, dass sie nützlich wären. Timer löste eine Funktion aus , die jeden Morgen oder jede Woche eine E-Mail verschickt , solche Sachen. Also geh weiter und erkunde. 21. Dauerhafte Funktionen und Orchestration: Willkommen zurück Leute. In dieser Lektion werden wir über dauerhafte Orchestrierung sprechen oder mit Funktionen umgehen. Das ist also ein weiterer Funktionstyp, der in 0 Funktionen verfügbar ist . Wir können es einfach mit der Vorlage aufdrehen und wir werden es uns ansehen. Aber bevor wir dort ankommen, möchte ich es einfach durchmachen. Eine Beschreibung in der Microsoft-Dokumentation für dauerhafte Funktionen, dauerhafte Form von Steinen, Das ist eine Erweiterung von Azure Functions. Und es verwendet im Grunde das Orchestrator-Muster, um Dinge zu verfolgen. Nur für den Kontext ist mir eine dauerhafte Form, in der Sie die definierten Workflows mit Prozeduralcode verwenden können. Unser Flow ist also im Allgemeinen, dass Sie dies dann tun möchten, dass Sie dann möglicherweise Montag benötigen , während die Intervention zwischen R-naught. Der Punkt ist jedoch, dass Sie nicht zu Schritt drei kommen möchten, es sei denn, die Schritte 12 wurden erfolgreich abgeschlossen. Eine dauerhafte Funktion wird also den Betriebszustand tatsächlich so belasten, dass sie weiß, welche Entscheidung mit jedem Bezugspunkt zu treffen ist. Sie sind auch in der Lage, andere Funktionen oder andere dauerhafte Funktionen synchron und asynchron aufzurufen andere Funktionen oder andere dauerhafte . Und die Ausgabe wird zuverlässig in lokalen Variablen gespeichert. Unsere Geschichte als Funktionen ist langlebig und zuverlässig und sie überprüfen grundsätzlich jedes Mal, wenn sie eine Funktion oder ein Gewicht oder einen Ertrag ausführen. Jedes Mal, wenn eine Funktion aufgerufen wird und ihren Wert zurückgibt, erstellt sie einen solchen Punkt, damit sie genau weiß, wo sie sich in der Operation befindet und der Status nie verloren geht. Es ist immer da. Es verfolgt immer, was passiert und wo es gerade ist. Sie können lang andauern, sie können Sekunden, Tage, Monate sein , die nie enden. Sie haben also verschiedene Muster, bei denen Sie eine API möglicherweise immer wieder asynchron aufrufen. Möglicherweise ziehen Sie eine Datenquelle für etwas, und das wollten Sie kontinuierlich tun. Der wichtigste Teil davon sind gesuchte Lkw der Staat. Und es ermöglicht Ihnen immer zu wissen, wo Sie sich gerade befinden. Wenn Sie ein besseres Verständnis wünschen, zumindest mit der Theorie, können Sie das Dokument lesen und vieles mehr. Und Sie können einige der Codebeispiele in den verschiedenen Sprachen sehen . Aber wir werden es zusammen machen und wir verwenden Visual Studio Code und eine C-Sharp-Vorlage. Also springen wir natürlich zu Visual Studio Code. Ich habe bereits einen Ordner erstellt, einen 0 dauerhaften Funktionen. So nannte ich es. Nein, wir sprangen auf die Azure-Registerkarte und auf die Schaumstoff-Sektion Oceans. Wir werden eine neue Funktion erstellen. Also kommen wir zu unserem üblichen Zauberer. Ich, zoomen Sie einfach hinein, damit wir klar sehen können, ich wähle meinen Ordner und dann wähle ich meine Sprache. Dann will ich unsere eigene Zeit. Also habe ich sechs installiert. Natürlich wählen Sie die Laufzeit entsprechend Ihrem Kontext und natürlich wäre die Version relativ zu dieser Version vier Zielen mit dotnet sechs. Und dann möchte ich, dass Sie leicht Shunts die Ergebnisse bilden können. Sie können immer einfach anfangen zu tippen und es wird es herausfiltern. Also wollte ich dauerhafte Funktionen, Orchestrierung. Und ich belasse den Standardnamen für Nein“ und „Standardnamespace“. Dann wollten sie wissen , welches Speicherkonto ich den lokalen Emulator verwenden werde und ihm erlauben werde, ein Projekt zu generieren mit dem es erstellt wurde, und wir haben unsere neue Codedatei. Ich werde nur ein bisschen herauszoomen, also sind wir bereits damit vertraut, wie das Projekt aussieht. Wenn ich in die CS-Projektdatei schaue, sehen Sie hier, dass ich diese spezielle Bibliothek habe, die für unseren dauerhaften Betrieb sehr wichtig ist . Wenn Sie also Visual Studio verwenden, überprüfen Sie einfach und stellen Sie sicher, dass dieses Paket verwiesen wird. Wenn nicht, können Sie es an neuen Gates abrufen bevor Sie die langlebige Funktionsvorlage erstellen. Das ist in Ordnung. Aber wenn wir unsere Codedatei haben, am Wochenende, schauen Sie sich einfach durch und wir schauen uns einfach durch und machen einen Test. Ich werde es nicht zu sehr oder so ändern. Wir wollten nur verstehen, was genau hier passiert. Wir haben also die Anmerkung, die uns oder den funktionalen Namen angibt. Dieser Funktionsname hat leider eine Funktion namens Ron Orchestrator, die eine Zeichenfolgenliste zurückgibt. Und dann passiert es einen Orchestrierungsauslöser. Und Sie können hier sehen, dass der Kontext vom Typ Ich habe einen dauerhaften Orchestrierungskontext gefangen. Es verfolgt also alle Ausgaben. Und dann wird jede Ausgabe angegeben, der Wert, der aus dem Aufruf dieser Funktion mit dem übergebenen Wert gewonnen wird aus dem Aufruf dieser Funktion mit dem übergebenen Wert gewonnen . Sie sehen also hier, es ist nur eine Funktion, die es wirklich hat und das sind die dauerhaften Funktionen, Orchestrierung, C-Sharp One auf der Partitur. Hallo. Es ist nur eine Funktion , die hier definiert ist. Stellen Sie sich jedoch vor, wenn wir mehrere Funktionen hinzufügen, die Sie nacheinander aufrufen möchten, könnten Sie sie einfach in dieser bestimmten Reihenfolge definieren. Also hier heißt es, rufe die Funktion mit diesem Namen auf und gib ihr diesen Wert. Dieser Wert wird gebunden. Hier ist unsere Funktion , die aufruft. Und obwohl der Name hier ist, heißt die Funktionsdefinition SayHello. Und dann braucht es eine Aktivität Trigger. Dieser Aktivitätsauslöser ist also so ziemlich der Parameter , der entbeint wird. Sie können Holzarbeiten wie eine Eingabebindung. Es könnte etwas für unsere Cosmos DB sein oder etwas anderes, weißt du, was auch immer es ist. Wir sind durch unsere Gangbindungen gegangen. Wir schätzen also, wie das funktionieren könnte. Aber sobald Sie dies getan haben, führen Sie den Vorgang basierend auf dem eingegangenen Wert aus und tun was auch immer. Also hier wird es nur Hallo zu jeder dieser Sprachen sagen , jeder dieser Städte, tut mir leid. Es wird einfach Hallo mit dieser Lautstärke zurückgeben. Das ist alles was es wirklich tut. Nein. Die letzte Funktion , die Sie hier erhalten ist eine, die durch einen HTTP-Trigger ausgelöst wird. Wir wissen also bereits über HTTP ausgelöste Funktionen. Das heißt, wenn wir es nennen, wenn wir diese dauerhafte Funktion und diese ganze dauerhafte Operation durch diesen HTTP-Trigger aufrufen, habe ich bemerkt, dass Ihr Buchclient I Durable Orchestration Client anruft und du nennst es Starter. Dann startet es den Vorgang auf der Instanz-ID gespeichert. Und alles, was dies tut, ist zunächst eine neue Asynchrone der dauerhaften Funktion zu starten, die wir uns zuerst angeschaut haben. Http-Auslöser wird die dauerhafte Funktion auslösen. Und die langlebige Funktion hat ihre Operationen skizziert, lösen Sie dies aus. Dass viele Phonetiker in dieser Reihenfolge ihre Ausgaben aufbewahrten und eine große Rendite erzielen. Am Ende von all dem wird es protokollieren und sehen, dass wird es protokollieren und es mit der Instanz-ID gestartet wurde. Die Inzidenz-ID hofft also erneut, dass es sich um einen LKW handelt, dass dieser Vorgang gerade läuft oder fertig ist oder was auch immer. Und das können Sie in Ihren Protokollen für Analysen verwenden. Und dann wird am Ende dieses Ganzen nur die erschreckte Antwort überprüfen und einen Status geben, die Instanz-ID. Die Inzidenz-ID wäre also wieder die Inzidenz diesem Buch passiert Kastration? Und dann überprüft es die Statusantwort, um zu sehen, ob sie fertig ist? Geht es uns gut, was auch immer. Wie ich schon sagte, es speichert den Zustand, in dem ich erkläre, lassen Sie uns dies in Aktion sehen. Also werde ich diese Funktion ausführen und ich bin trotzdem zum Debuggen gegangen. Alles klar, es ist auf denen, die laufen. Sie werden hier in den Protokollen sehen, dass festgestellt wird , dass die HTTP gestartet wurde, so dass es sich um HTTP-ausgelöste Methode handelt. Dann haben wir die Arc-Iteration und dann haben wir die Aktivität. Das nennen wir also die Funktion, die es aufruft. Es ist eine Aktivitätsfunktion. Und das ist die Kunstgeschichte. Es ist ein Film. Dies ist ein einfacher HTTP-ausgelöster Schaum. Wenn ich diesen Anruf tätige, startet HTTP und ich bin bereit, den Klick zu steuern, das Klicken mit der Steuerung hätte es natürlich im Browser gestartet. Also mein Browser startet, er rief URL an und wir wissen, was passiert wenn Sie es die URL für eine HTTP-ausgelöste Funktion nennen. Und es ging tatsächlich weiter und startete den dunkelsten Unterricht, oder? Also dieses hieß es, aber die Host-APIs. Und dann siehst du hier , wo es heißt Hallo wurde erfolgreich angerufen und es ist zurückgekehrt hallo Tokio, hallo Seattle, und hallo London. Das ist ein Beweis dafür, dass es erfolgreich genannt wurde. Aber sieh dir das auch an. Mal sehen, ob ich ein bisschen hineinzoomen kann , damit wir diese Protokolle besser sehen können. Sie würden feststellen, dass jedes Mal, wenn es diesen Aufruf erfolgreich getätigt hätte , direkt auf diese Kunstgeschichte ODER Funktion zurückgeht. Es ruft an, es führt die Aktivität aus. Dann bekommen wir das Ergebnis der Aktivität. Dann sagt es uns, dass es die Aktivität ausgeführt hat. Und dann geht es gleich zurück zum Arcbest Leckerbissen oder jedes Mal, wenn es einen Anruf tätigt, gibt es die Kontrolle an den Orchestrator zurück. Und dann sind Sie natürlich derjenige, der am Workflow arbeitet. Sie setzen also Ihre Logik und Ihre Protokollierung und Ihre Entscheidungen basierend auf der Ausgabe oder dem Erfolg oder fehlen deren Fehlen. Rufen Sie die dauerhafte Funktion aus und rufen Sie die Aktivität auf. Das ist Loch. kannst du zu deinem Vorteil nutzen. Wenn Sie die HTTP-ausgelöste Funktion r dot URL aufgerufen haben, werden Sie feststellen, dass Sie diesen JSON-Block erhalten. Benutzen Sie also Postbote oder haben den Browser benutzt? Es spielt keine Rolle, aber was Sie erhalten, ist eine Statusabfrage einen URI-Wert erhält , dass eine Statusabfrage einen URI-Wert erhält , der einen URI hat, der uns den Status, den aktuellen Stand der Technik, gibt. All das. Ist das URI Ich habe das kopiert und mich einfach in einen neuen Tab legen lassen. Und du siehst hier steht Name, wir bekommen den Namen davon, wir bekommen die Instanz-ID. Sicher. Wir kriegen den Runtime Stack. Der Wechsel dieses Falls ist also abgeschlossen. Also an irgendeinem Punkt in der Mitte, wenn Sie sehen wollen, wie der Status dieser dauerhaften Funktion ist, ist es schon erledigt? Dies ist noch im Gange, dann könntest du einfach sehen, mir diesen Status geben. Das ist so ziemlich für dauerhafte Funktionen. Natürlich ist es ein wirklich einfaches Beispiel, aber ich hoffe, Sie sehen die Möglichkeiten und wie Sie diese Art von Workflow tatsächlich für komplexere Vorgänge nutzen können von Workflow tatsächlich für komplexere Vorgänge bei denen Sie müssen LKW. Ist es schon fertig? Wie lautet der Status in der Mitte? Und treffen Sie Entscheidungen, die darauf basieren, dass alle von einer Operation in eine andere gehen. 22. Erstelle eine serverlose REST API mit Azure Funktionen: Hey Leute, in dieser Rubrik werden wir uns ein paar lustigen Sachen befassen. Wir haben uns also einige Theorie, viele Konzepte angeschaut und einfach nur das Innenleben einer 0-Funktionen verstanden. In diesem Abschnitt werden wir jedoch alles Gelernte testen und eine Rest-API aufbauen. Wir verwenden also nur Funktionen und bauen alte Endpunkte. Wenn Sie mit Rest-APIs nicht vertraut sind, können Sie meine anderen Kurse zur Rest-API-Entwicklung durchsickern , in denen wir tatsächlich durchgehen, wie sie mit einer ganzen EPA-Entwicklungsprojektvorlage erstellen EPA-Entwicklungsprojektvorlage Visual Studio-Boot hier werden wir Azure Functions verwenden . In diesem Video. Lasst uns einfach anfangen. Wir werden Visual Studio dafür verwenden. Lasst uns einfach die ASOR-Schaumzonen finden. Wenn Sie es nicht auf der linken Seite haben , können Sie immer suchen. Und wenn Sie es überhaupt nicht haben, müssen Sie das Installationsprogramm abrufen und den Azure-Workload installieren. Lasst uns Azure Functions holen. Und das rufe ich an, ich nenne es eine Einkaufswagenliste. Ich denke, das ist ein einfaches Beispiel. Wir haben Artikel, die Linda-Einkaufswagen haben, und wir nehmen sie ab, wenn wir sie haben. Wir können einfach weitermachen und das schaffen. Und im Moment mache ich eine leere Vorlage für den Speicher-Emulator. Ja, wir wollten einen Speicher-Emulator verwenden. Wir sind schon gegangen. Das funktioniert. Und nur für den Kontext, diesen Punkt, die Nullen, den traditionellen Azure Storage, sagte mir Emily und sollte nicht unbedingt richtig funktionieren. Und ich hätte erwähnt, dass du azi benutzen müsstest, richtig. Um sicherzustellen, dass es nach der Installation ausgeführt wird, können Sie diesen Befehl immer einfach ausführen azurite und dann werden Sie sehen, dass er alle Dienste startet. Wenn Sie also Schwierigkeiten haben, sich mit Ihrem Trend zu verbinden , um diese emulierten Dienste zu verwenden , und das Senden kann keine Verbindung herstellen, führen Sie einfach diesen Befehl azi aus, oder? Alles klar. Ich lasse das einfach im Hintergrund laufen. Ausländisch. Oh, lass mich weitermachen und diese leere Vorlage erstellen. Wenn wir zurückkommen, beginnen wir mit dem Erstellen oder Funktionen und die Betrachtung des Konzepts des Flurs wird es in Bezug auf den Aufbau unserer restlichen API-ähnlichen Struktur darlegen . 23. Setup: Alles klar, also lasst uns das anfangen. Ich füge Funktion hinzu, also neue Azure-Funktion. Und da wir es mit einer API-ähnlichen Struktur zu tun haben, müssen alle meine Funktionen HTTP ausgelöst werden. Ich nenne diese Warenkorb-Funktion oder Einkaufswagen-API. Nennen wir es so und fügen hinzu. Dann gehe ich mit dem HTTP-Trigger. Ich wollte es zumindest vorerst anonym machen. Und klicken Sie auf Hinzufügen. In Ordnung, also nirgends funktioneller, nicht wann man mit dem Modifizieren beginnen soll. Stattdessen werde ich noch ein paar andere Dinge einbringen. Also füge ich einen neuen Ordner hinzu, ich nenne es Modelle. Die Sache mit der API-Entwicklung ist , dass Sie dies normalerweise nicht tun werden. Modelle sind Details, die Watt-Daten regeln , mit denen Sie für jede Anforderung einen Slash-Interrupt angeben. Ich werde zuerst ein Einkaufswagen-Modell haben. Und ich habe dieses interne, interne Mittel kennengelernt, dass es von allem innerhalb desselben Projekts verwendet werden kann , damit ich es als intern oder nein belassen kann. Und ich füge ein paar Eigenschaften hinzu. Ich habe einfach alle drei Klauseln gemacht und du kannst sie einfach ansehen und entsprechend replizieren. Also haben wir den Einkaufswagen-Artikel oder einen Einkaufswagen im Allgemeinen. Eigentlich sollte dies ein Einkaufswagen-Artikel sein. Lassen Sie mich einfach den Namen der Datei entsprechend aktualisieren. Lassen Sie mich einfach machen der Warenkorbartikel eine ID hat, die ich nur als String-GUID verwenden werde . Ich habe eine Urkunde erstellt, und dann habe ich den Artikelnamen, und dann habe ich gesammelt oder nicht, du weißt, was, wie auf unserer Einkaufsliste, den Artikel abstreichst , sobald du ihn in den Einkaufswagen gelegt hast. Das ist so ziemlich genau das. Signifizierend. Dann haben wir einen für Dekret. Natürlich für das Create. Ich bin nicht bereit, alles aufzudecken. Ich möchte nicht, dass der Benutzer die ID verantwortlich ist oder sie erstellt. Und Booleans Default, Default. Wir verpassen also nicht die Angabe, dass das vom Benutzer benötigt wird. Ich gehe davon aus, dass es noch nicht gesammelt wurde. Alles was wir brauchen ist der Name des Artikels. Für das Update. Möglicherweise ändern Sie den Namen des Elements. Möglicherweise ändern Sie auch einfach nur gesammelt oder ich könnte sie einfach hochladen, um nur ja zu sehen, es ist gesammelt oder nicht. Also denke ich, dass ich es so einfach halten werde und später einfach damit arbeite, wenn wir uns mit der Datenbank verbinden, dann müssen wir noch ein paar Modelle erstellen. Aber für den Knoten ist das alles , was wir brauchen. Eine Rest-API. Dies würden Sie als Details oder Datenübertragungsobjekte bezeichnen . Wenn diese Begriffe mit ihnen vertraut sind, können Sie sich immer meinen Kurs zur API-Entwicklung ansehen. Es hat sich jedoch auf unsere Funktion zurückgesetzt. Was wir dann hier tun werden, ist tatsächlich zu etablieren oder Wurzeln. Die Sache mit Funktionen ist also , dass wir diese Klasse standardmäßig erhalten, ja, und dann erhalten wir eine Funktion mit R1. In diesem Fall heißt es, du kannst es tun, du kannst posten. Wir brauchen nicht wirklich etwas, um beides zu tun , denn in unserer Ruhe-API-Sitzung sollte es sehr streng sein. Einer für das Posten eines vergisst bereits auf der sehr grundlegenden Ebene gesehen. Aber jede Funktion sollte zu diesem Zeitpunkt für eine Operation verantwortlich sein. Da wir also diese Rest-API-Struktur und den Standard nachahmen , haben wir uns begeben, dies zu ändern. Was ich tun kann, ist die Funktion umzubenennen. Wenn dies also Einkaufswagen-Artikel erhalten soll, kann ich dies bezeichnen, Einkaufswagen-Artikel abrufen. In Ordnung, also das ist der Funktionsname. Auf der Route möchte ich jedoch einen Wert angeben, weil ich nicht möchte, wenn Sie die Funktion aufrufen, Sie müssen sagen, dass Slash API diesen Funktionsnamen und dann diesen Funktionsnamen und dann diese Funktion wieder ruhen API-Standards würden Sie dies eine EPI, eine Struktur zu nennen. Aber basierend auf Ihrem Verb auf potenziellen Parametern, damals möglich sind, würde es nicht wissen , auf welche Funktion Sie sich beziehen. Also werden wir diese Route umbenennen, damit sie ein bisschen mehr so aussieht , wie unsere Rest-API aussehen würde. Ich nenne es Einkaufswagen-Artikel. Sie haben also erwartet, weil es bereits der URL-Schrägstrich , der API-Schrägstrich und dann der Funktionsname sein wird. Aber wenn ich dies als Root angebe, dann würde es nicht wissen, dass aus der HTTP-Anfrage irgendetwas, das nach der Slash-API in diese Root geht, zu dieser Funktion geht, oder? Das nächste ist, dass ich nicht möchte, dass diese Funktion veröffentlicht wird. Ich wollte etwas abrufen, um diesen Beitrag zu entfernen. Und nur um sicherzustellen, dass alles gut aussieht, benenne ich die Funktion selbst um , um zu reflektieren , wie dieser Funktionsname ist, damit alles irgendwie einheitlich aussieht. Um, für null werde ich das alles entfernen. Ich kann das alles einfach aus der Funktion entfernen , denn was wir tun werden, erfordert all das pro c. Nein. Wieder einmal machen wir unsere RISD-API, das bedeutet, dass ich eine zum Erstellen brauche. Also werde ich einfach all das kopieren und ich habe diesen einen Create Shopping Guard genannt , den ich versuche, wir müssen der Methode diesen Namen geben. Und dieser wird der Beitrag sein , weil es diesmal nicht wird. Es erschafft ein ganzes Ich erschaffe. Du solltest post verwenden und dann hat es den gleichen Root. Es wird also eine Post-Anfrage an diese EPA oder diese HTTP-Route sein . Dieser wird angefordert , dass HTTP-Wurzeln sind. Wir können das Gleiche für PUT und Delete tun. Put wäre zum Aktualisieren, Löschen. Nichts was selbsterklärend ist. Einkaufswagen für Lebensmittel, die ich besuche. Oder lassen Sie mich einfach sicherstellen, dass meine Methoden wirklich widerspiegeln was die Operation aussehen wird. Also lösche den Einkaufswagen, ich, äh, Tim, lösche Einkaufswagen-Artikel. Diese ist eine PUT-Anfrage und diese ist eine Löschanforderung. Alles klar, wieder einmal kartieren wir nur alte Wurzeln. Sie können sich ändern, während wir weitermachen. Wir sehen vielleicht etwas , das wir ändern wollten. Natürlich werden wir die Parameter ändern , wenn wir uns auf jeden einzelnen konzentrieren. Aber für mich kartiere ich sie nur, damit wir das große Ganze bekommen. Es gibt eine andere Art von Gets, weil wir vielleicht bestimmte wollen. Wenn wir also einen bestimmten Warenkorbartikel haben wollen, wird es einen Einkaufswagen-Artikel erhalten, keine Zehner. Dies wäre auch ein Einzug für die Wurzel wäre ein Schrägstrich des Einkaufswagen-Artikels. Und dann verwenden wir einen Bindungsparameter, um Sie wissen zu lassen , dass sie etwas namens ID erwarten sollten. Danach. Ich hole alle Gegenstände, die wir haben. Ruft nach ID für zu viel Artikel im Warenkorb, wenn Sie sich qualifizieren möchten, sagen Sie einfach, dass Sie sich sehr klar sind und Sie wissen, dass es genau dafür ist. Aber alles was es ist, das ist der Ausweis. Wir haben das Create, das nur ein Beitrag ist. Und dann haben wir den PUT- und Delete-Node, dass wir eine gute Vorstellung vom großen Ganzen haben. Wenn wir wiederkommen, können wir nacheinander anfangen , an ihnen zu arbeiten. 24. Einrichten von POST (Erstelle HTTP (Create): In Ordnung, also sind wir zurück und beginnen mit dem Erstellen von Einkaufswagen-Artikeln. Die erste, lassen Sie uns die Nachricht aktualisieren oder protokollieren. Ich werde nur sagen, Einkaufswagen-Artikel erstellen. In der Anfrage kommen die Daten ein. Wir haben bereits gesehen, dass diese Anfrage Good of im Text in der URL geschaut hat. Und da es sich um einen Beitrag handelt, erwarten wir, dass die Daten in den Körper kommen werden. Ich beginne einfach mit einer Variablen namens String Requests Data, wo wir auf eine neue Instanz des Stream-Lesers warten werden. Und dieser Stream-Leser wird in den Wert des Parameters Req Dot Body von HTTP-Anfragen gehen . Dann wollen wir lesen, lesen, um eher asynchron zu enden. In Ordnung? Jetzt, da wir es gelesen haben, wird dies diesen JSON-Körper zurückgeben. So ziemlich wir möchten es in unser Warenkorbgegenstand serialisieren . Also werde ich speichern var item ist gleich, ich verwende JSON-Converts. Json Convert stammt aus unserer Newton's Soft-Library und das war bereits enthalten. Hier. Es ist im Grunde eine Voraussetzung für HTTP-ausgelöste Funktionen. Wir haben es gesehen, wir haben es schon mal benutzt. Nun, mein Punkt ist, dass es so ist , als wäre jede andere Tasche nur ein NuGet-Paket. Wenn Sie also bereits wissen , wie Sie Pakete erhalten, können Sie einfach zum NuGet-Paket verwalten gehen und es hier ohne Bedenken hinzufügen. Wir möchten, dass GSM Convert Dot Objekt deserialisiert. Wir wollten uns in unser Objekt „ Einkaufswagen erstellen“ entserialisieren . Und dann geben wir ihm die Anforderungsdaten, denen wir wissen, dass sie JSON sind, in der Natur. Nachdem wir das alles gemacht haben, möchten wir eine Datenbank bearbeiten. Unsere Datenbank wird vom Typ Warenkorbartikel sein , da wir die Standardwerte wünschen. Bevor ich all das mache, lass mich einfach eine neue Instanz erstellen. Okay, lass mich das von Element zu Daten ändern. Und dann wollte ich sagen, dass var item hier einer neuen Instanz des Einkaufswagen-Artikels entspricht . Einkaufswagen. Ich drehe mich um. Dieser neue Warenkorbartikel nimmt nur den Artikelnamen an , der aus Daten stammt, Data-Punkt-Artikelname . Sobald wir das Objekt haben möchten wir sehen, ob wir es in einer Datenbank speichern wollten. Ich bin noch nicht bereit, die ganze Verbindung mit der Datenbank zu starten. Was ich also tun werde, ist nur eine statische Liste zu verwenden, aber ich rufe einen Einkaufswagen an, einer neuen Instanz entspricht. Also hier unten sage ich einfach einen Einkaufswagen, Artikel Punkt Hinzufügen, Neuer Artikel. Lassen Sie uns nun eine Minute innehalten und über die Relevanz der Verwendung dieser Liste nachdenken . Was die Vor- und Nachteile offensichtlich in einer echten Umgebung liegen, wäre keine solche Liste zu verwenden, wäre eine Datenbank. Ich bin jedoch noch nicht bereit für die Datenbank. Also werden wir die Liste benutzen. Jetzt ist die Sache mit Funktion oben eine Während es läuft, wird es während der Laufzeit alle Daten und Variablen speichern . Während wir testen, ist dies perfekt, weil wir alle verschiedenen Methoden aufrufen können und mit derselben Liste interagieren würden . Eine Produktionseinstellung. Denken Sie daran, dass Funktionen skaliert werden können. Das bedeutet, dass wenn Sie dies bereitstellen würden , während es für einige Szenarien funktioniert während Ihre Funktions-App ausgeführt wird. Denn denken Sie daran, dass es bei einigen Pflanzen tatsächlich ausgeschaltet wird tatsächlich ausgeschaltet wird bis Sie es wieder aufteilen müssen. Das ist also eine Gefahr, aber um uns davon auszugehen , dass dies nicht passiert, kann es auf mehrere Instanzen skalieren. Dann würden Sie am Ende mehrere Instanzen der Liste erhalten, was eine weitere Gefahr darstellt. Deshalb möchten wir natürlich eine Datenbankunterstützung für null. Wir benutzen einfach unsere Liste. Nachdem wir der Liste hinzugefügt haben, können wir dann ein neues Objektergebnis zurückgeben. Und ich werde gerade den neuen Gegenstand übergeben, die ganze Liste, aber nur das Element, das nicht erstellt wurde. Das ist es wirklich. Alle unsere Fehler bei unserem Artikel zum Erstellen eines Einkaufswagens sind verschwunden. Und das ist Schritt eins. Wenn wir also zurückkommen, gehen wir auf unsere Get. Wir werden einfach beides in einem Ziel machen, alles abrufen vs. per ID bekommen. 25. Einrichten von HTTP Azure-Funktionen: Okay Leute, also sind wir wieder in dieser Lektion, wir werden uns auf Methoden konzentrieren oder bekommen. Die erste Methode, die darin besteht, alle Elemente zu erhalten , die man hat, ist ziemlich einfach. Meine Nachricht wird also sagen, get, alle Einkaufswagen-Artikel abrufen. Dann müssen wir wirklich nur noch zurückkehren. Also würde an dieser Stelle wirklich die Datenbank abfragen und sagen, gib mir, in Ordnung, In diesem Fall haben wir keine wirklich Datenbank, wir haben nur diese Liste. Alles was ich tun werde, ist wieder zurückzukehren, okay, Objektergebnis mit der Liste. Das ist die Liste der Artikel des Einkaufswagens. Und wenn du willst, alle, kommst du an alle. Das ist also so ziemlich genau das. Ich habe hier einen Fehler. Entschuldigung, ich habe meine neue Rückkehr verpasst , neu okay, Objektergebnisse. Da sind wir los. Das ist es wirklich. Für die „Get's by ID“. Es ist ein bisschen, es dauert ein bisschen fertiger, oder? Also ja, wir haben die gleiche Regel. Wir wissen, dass dieser erwartet, dass ein ID-Wert eintritt. Dieser ID-Wert kommt also normalerweise als Parameter ein. In einer HTTP-Anfrage. Es könnte als HTTP oder Parameter hereinkommen können. Ich füge hier einen neuen Parameter als Wert-Stream-ID hinzu. Dann verwende ich einfach die Komma-String-ID die den ID-Wert darstellt, der übergeben werden soll, wenn dieser Funktionsaufruf durchgeführt wird. Ich werde das eigentlich als das Letzte bezeichnen. Ich lege es nach der Logger-Stream-ID ein. Sobald diese Methode aufgerufen wurde, erwarten wir diese ID. Sobald wir diese ID haben, schreibe ich einfach die Logger-Nachricht um und bekomme den Warenkorb mit ID. Und dann kapsele ich einfach den ID-Wert, der übergeben wird. Tut mir leid, in Interpolieren, um zu kapseln, wisse, dass ich das habe. Ich werde sagen, dass der Artikel des Einkaufswagens gleich ist, ich gehe zu meiner Warenkorb-Artikelliste. Dann sehe ich mir Punkte an, die wir finden könnten. Aber ich werde mich an das halten, womit ich mich zuerst oder Standard wohler fühle , weil ich zuerst oder standardmäßig machen möchte. Wenn es es nicht findet, wird es mit einer Null zurückkehren. Erster Stern-Standard und dann Kontrollpunkte, um system.in Link zu verwenden. Und dann setzen wir unseren Lambda-Ausdruck ein. Also q dot ID aus dem Warenkorb, Warenkorb ist der Artikel gleich dem ID-Wert , der übergeben wird. Und sobald wir das getan haben, ging ich zum Check. Ich sehe, Visual Studio hilft mir dabei. Wenn der Warenkorbartikel null ist, was bedeutet, dass er offensichtlich nichts zurückgegeben hat, müssten wir ein neues, nicht angesufenes Objektergebnis zurückgeben . Das ist also ein 404. Ansonsten. Ansonsten. Okay, also hier ist ein Unterschied zwischen, weil Sie möglicherweise feststellen, dass Sie Objektergebnisse im Vergleich zu Ergebnissen haben . Sehen wir uns alte wichtige Ergebnisse an, die sich von den Ergebnissen des alten Schlüsselobjekts unterscheiden. Der Unterschied besteht darin, dass Sie, wenn Sie zu den Objektergebnissen zurückkehren, Daten eingeben müssen, wenn Sie keine Details zurückgeben. In diesem Fall habe ich also keine Daten, um zu ihm zurückzukehren und einen gewissen Wert zu erwarten. Ich muss sagen, dass keine Ergebnisse angerufen wurden. Also wollten sie wirklich sehen, er denkt, es seien wirklich dieselben vier über vier, aber genau welches man bei Bedarf verwenden sollte. Wir werden ein nicht gefundenes Ergebnis zurückgeben. Andernfalls werden wir mit diesem bestimmten Warenkorbartikel ein neues Objektergebnis zurückgeben diesem bestimmten Warenkorbartikel , damit die Farbe das Detail erhalten hätte. Lassen Sie uns schnell überprüfen, um mehrere Artikel zu erhalten, den Warenkorb zu bekommen, den ich versuche. Alles, was ich mache, ist das Abfrageangebot ohne Angebot, eine Abfrage für den Datenspeicher auszuführen und alles zurückzugeben wissen, was ein Datenspeicher ist ist wenigstens. Also gebe ich nur zurück , was in dieser Liste steht. Wenn wir nach ID wollen, muss ich angeben, dass die Parameter-ID gefangen werden soll. Sie sind schon beide bekommen, wir kennen bereits die Wurzeln was das ist, Slash IID, daher brauche ich die ID. Und wenn ich diese Idee habe, wende die Rondo-Abfrage ab, um dieses eine Objekt im Datenspeicher zu finden. Wenn ich es nicht finde, gebe ich keine folgenden Ergebnisse zurück. Andernfalls gebe ich die alten Hauptobjektergebnisse zurück. Das ist es wirklich für die Abholmethoden von unserer Rest-API. 26. Setup PUT: Alles klar Leute. Lassen Sie uns also zu unserem PUT springen, wir wollen Artikel aktualisieren oder einkaufen. Nein. Wir müssen noch einige Änderungen vornehmen denn wenn wir aktualisieren möchten, müssten wir eine ID sowie die zu aktualisierenden Daten weitergeben , oder? Also haben wir gemacht, um das zu tun, was wir hier gemacht haben, nämlich Include-ID, ID-Parameter. Da sind wir los. Und wir müssen unsere Wurzeln aktualisieren, weil wir diese Zeug-ID auch am Ende der Update-Roots benötigen. Dann können wir eine Nachricht mit der GnG-Leiste protokollieren den Warenkorbartikel mit ID aktualisieren. Das ist drin. Nein, wir müssen eine Art Hybrid-Operation machen. Das erste, was wir brauchen, um die Daten zu finden , damit wir wiederholen können, was wir im Git gemacht haben. Ich werde einfach weitermachen und mir diesen Warenkorbartikel besorgen , der die ID hat , die als Parameter übergeben wurde. Wenn wir es nicht gefunden haben, dann rief die Rückkehr nicht an. In Ordnung. Als nächstes müssen wir etwas wiederholen wie das, was wir mit dem Create gemacht haben. Einige gingen los, um die eingehenden Daten zu analysieren. Dies würde in den Artikel zum Update-Einkaufswagen analysieren. Und dann könnten wir in einer größeren Operation so etwas wie ultimative Vogel verwenden, um zwischen den eingehenden Daten und dem Warenkorbartikel zuzuordnen eingehenden Daten und , um die Aktualisierungen durchzuführen. Aber das ist eine sehr einfache Operation. Was ich also tun werde, ist einfach den Warenkorbartikel, die gesammelte Punktekennzeichnung zu aktualisieren gesammelte Punktekennzeichnung und Sie gleich dem gesammelten Datenpunkt sein zu lassen. Also aktualisierst du es. Es muss bedeuten, dass Sie den Booleschen Wert von true in false oder umgekehrt ändern . Das ist alles, was wir wirklich aktualisieren werden. Am Ende von all dem wir einfach wieder okay zurückgeben, Objektergebnisse. Und ich gebe einfach den aktualisierten Warenkorbartikel zurück. Das Objekt, das wirklich alles ist, was es für das Update gibt. Also lasst es uns noch einmal durchgehen, weil ich irgendwie Code aus verschiedenen Teilen genommen habe. Lassen Sie mich also einfach erklären , was wir tun. Erstens finden wir den Warenkorbartikel mit der übereinstimmenden ID, die über den Parameter übergeben wurde . Dann werden wir sagen, wenn nichts gefunden wurde, geben wir einen 404 zurück. Andernfalls wird es mir weiterhin die Daten besorgen , die in der Anfrage eingingen , denn mit einem Put wären die Daten im Körper. Es ist sehr ähnlich wie es im Körper für die Post wäre. Geben Sie mir die Daten aus dem Körper, Piraterie kippen Sie in das entsprechende Modell zur Aktualisierung. Und dann werden wir manuell aktualisieren. Also mache ich es manuell in einer größeren Operation, wie gesagt, Sie würden wahrscheinlich eine automatische oder oder eine andere Drittanbieterbibliothek verwenden andere Drittanbieterbibliothek oder um das für zwei sehr einfache Operationen zu konvertieren oder zu erledigen für zwei sehr einfache Operationen sind sehr einfache Operationen, also machen wir das einfach. Und dann geben wir das aktualisierte Objekt als Teil der Rückgabeergebnisse zurück. Das ist es wirklich, um den PUT einzurichten. Wenn wir wiederkommen, werden wir unser letztes tun, nämlich das Löschen. 27. Setup HTTP Setup: In Ordnung, also lasst uns mit dem Löschvorgang beginnen . Also denke ich, dass wir das schon lange genug machen. Wenn Sie Pause drücken und versuchen möchten, es selbst zu machen , würde ich das ermutigen. Sonst können wir es einfach durchgehen . Ich habe den Code bereits geschrieben. Wir hatten die Methode zum Löschen von Einkaufswagen-Artikel von zuvor eingerichtet. Was wir nicht getan haben, war offiziell zu rooten. Der Root benötigt also wieder einen ID-Wert dort. Und wir haben die übereinstimmende Parameterzeichenfolge ID die Protokollnachricht aktualisiert. Und noch einmal haben wir versucht, es zu finden. Wenn es nicht da ist, sagen wir, dass keine Ergebnisse gefunden wurden. Wenn wir jedoch fortfahren, sagen wir, dass Sie es aus der Warenkorbliste entfernen und dann ein altes Schlüsselergebnis zurückgeben. Hinweis nicht okay, Objektergebnisse, beide Okay, Ergebnis, da es keine Daten gibt, die zurückgegeben werden müssen. Und das ist es wirklich für die Delete-Methode, oder? Wenn wir also nur Control Shift und B machen, können wir erstellen und sicherstellen, dass wir nirgendwo Fehler in unserem Code haben. Wir können sehen, dass wir einen erfolgreichen Build-0-Fehler haben und wir können fortfahren. Jetzt, da wir alle vier unserer Operationen ausgearbeitet haben , werden wir, wenn wir zurückkommen, einfach einige Tests durchlaufen. Wir verwenden Postman, um die verschiedenen Endpunkte aufzurufen und sicherzustellen, dass sie funktionieren oder dass unsere Funktionen so funktionieren , wie wir es erwarten. 28. Azure-Funktionen mit PostMan testen: Okay, also ist es Testzeit. Wir haben die ganze harte Arbeit geleistet. Lassen Sie es uns auf die Probe stellen, damit wir einfach auf den Start-Button hier in Visual Studio klicken können auf den Start-Button hier in Visual Studio klicken , um mit dem Reden zu beginnen. Oder wenn Sie jetzt Visual Studio Code verwenden, wissen Sie, wie Sie das ausführen können. Und dann erhalten wir in unserer Konsole, die die Ausführung begleitet, die die Ausführung begleitet, eine Liste aller Funktionen, sodass wir sie alle dank des von uns hinzugefügten Funktionsnamensattributs nach Namen sehen . Wir stellen aber auch fest, dass jeder eine Wurzel hat. Ja, die Regeln hätten auf dem Namen basiert , der standardmäßig angegeben wurde. Wir haben das jedoch außer Kraft gesetzt und wir werden unsere eigenen Wurzeln einsetzen. Und dort können Sie sehen, wie Sie jede Methode entsprechend der Route aufrufen können . Wenn wir mit einem Postboten oder einem anderen HTTP-Testtool testen und ich sage, okay, rufen Sie die get all methoden auf. Beachten Sie, dass Sie alle Warenkorbartikel erhalten, ich rufe einfach diese URL damit Sie sie einfach markieren und dann kopieren und in Postman einfügen können , klicken Sie auf Ausführen. Und dann würdest du hier sehen , dass du das Zeug kriegen würdest , diese 200, okay. Aber nichts, weil wir keine Daten eingegeben haben. Natürlich würden Sie auch sehen, dass das Protokoll aktualisiert wird. Also bekomme ich alle Einkaufswagen, die ich versuche. Und dann wurde es hingerichtet. Zu diesem Zeitpunkt. Lassen Sie uns versuchen, einen neuen Einkaufswagen-Artikel zu erstellen. Also würde ich diese Methode einfach ändern, um zu posten. Und dann im Körper danach sorge dafür , dass ich etwas JSON rübersende, also wechselt er zu RA und dann ist James F zu G eingeschaltet. Und was haben wir angegeben? Um zu kreieren? Wir akzeptieren nur den Artikelnamen. Also werde ich den Artikelnamen und dann den Doppelpunkt sehen. Und denken Sie daran, Anführungszeichen, dann Doppelpunkt einzufügen, und dann wäre dies nur von Postman. Wenn ich also auf Senden klicke, sehen wir es uns an. Dann würden Sie sehen, dass es mit der neu erstellten IID, diesem Zeitstempel, dem Elementnamen antwortet , und wenn es gesammelt wird, ist das falsch. Wenn ich mein ursprüngliches Ghetto erneut versuche, öffne einfach einen neuen Tab, benutzt das gleiche, was deine Kugeln ein Get benutzt haben und ich sende. Dann sehe ich, dass ich diesen einen Gegenstand von der Liste bekomme . Wenn ich mein anderes Get versuche, benötigt dieser die ID. Also ging ich zu einem Schrägstrich und übergab dann diesen ID-Wert, kopiere ihn, füge ihn dort ein, dann sollte ich nur ein Objekt zurückbekommen. Da sind wir los. Ich denke, dass das gut funktioniert, lass mich das Update ausprobieren. Also baue ich nur dementsprechend Wannen. Also haben wir noch einmal diese URL, fügen sie dort ein, oder eigentlich hätte ich einfach diese URL für die Updates verwenden sollen. Wir brauchen diesen ID-Wert, um einen Put zu machen. Und dann werde ich innerhalb des Anforderungstextes roh JSON sehen, dass gesammelt kein wahrer Doppelpunkt ist und der Wert wahr ist. Lass mich schicken, du siehst hier es kehrt zurück, sie werden beheizt sein Objekt Latina weiß, dass es nicht wahr ist. Wenn ich also zurück zum Geschenk gehe, bekomme alles erneut, dann bekomme ich das Update zurück. Wie gesagt, wenn Sie diese Funktionen innerhalb derselben Sitzung aufrufen, nannte ich es eine Sitzung. Also werden wir exekutieren, oder? Nein, wir rufen eins nach dem anderen an, eins nach dem anderen. Es aktualisiert jedes Mal dieselbe Liste. Deshalb bekommst du diese Ergebnisse. Wenn wir anhalten und neu starten, wird diese Liste natürlich geleert. Es ist also genauso, dass ein Schaum auftaucht, sobald er läuft. Wenn Sie diese Liste verwenden, dann kein Problem. Sobald die IT-Kenntnisse abgebaut sind und dann als Windsicherung danach wissen Sie nur, dass Sie diese Daten verlieren werden. Damit musst du also nicht vorsichtig sein. Aber später werden wir noch einmal darauf achten, persistenten Speicher in Form einer 0-Tabellen zu verwenden, die jedes andere Speichermedium sind, das Sie bevorzugen. Das ist es also wirklich. Das letzte, was ich machen werde, ist, dass ich lösche. Also verwende ich diese URL hier drüben. Und dieses Mal ist der Methodentyp delete. Wir haben den Ausweis und alles. Ich brauche keinen Betreff, auf 100 alte Kinder und alle Inhalte reagiert. Wenn ich zurückgehe und versuche , eine Abfrage auszuführen und nichts zurückkommt, wenn ich es neu erstelle, bekomme ich eine neue ID. Und wenn ich dann noch einmal versucht habe, da reinzuschauen , sehe ich alles. Das ist buchstäblich alles, was es gibt, zitieren Sie unquote alles, was es zu unserer Rest-API gibt. Je schwieriger es wird diese Bs basierend auf Ihren Geschäftsanforderungen am Ende des Tages, so einfach ist es, eine ganze Rest-API mit nur Azure Functions zu erstellen . 29. Testfunktionen mit der Benutzeroberfläche: Ein grundlegender Bestandteil jeder API ist die Entwicklung, wie sie mit Client-Apps interagiert. Das kann eine mobile App sein, es kann ein Web Up sein usw. In diesem Fall habe ich eine einfache Blades gemacht, in der Regelcode Interaktion mit den verschiedenen Endpunkten aus unserer z Funktionen API sind. Während er es läuft. Wir wissen , dass wir alle Wurzeln schon haben. Ich habe nur die Fitch-Datenseite aus der typischen Blazer-Up-Vorlage nachgerüstet . Und was es tut, ist, vom Laser zu testen , wenn sie Sie hier in ein Element stecken und Erstellen sagen, es wird tatsächlich aktualisiert , was passiert ist, dass wenn Sie hier mit der Konsole unterbrechen, dies dazu führt, dass es dazu führt positiv. Drücken Sie einfach die Eingabetaste, es wird fortgesetzt. Sie sehen hier, dass der Anruf tatsächlich einen Einkaufswagen erstellt hat. Und dann muss es abgerufen werden. Und es gibt unseren neuen Einkaufswagen-Artikel. Wenn ich einen Test von Blazer One sage, und lass mich nur sicherstellen, dass die Konsole weiß, dass er normal funktionieren sollte , wenn ich auf Updates erstellen klicke und in der Liste auf „Updates erstellen“ klicke . Wenn ich auf das Häkchen zum Sammeln klicke, siehst du hier, dass es den Port aufruft. Los geht's. Also stell es aus, aktualisierte es. Und wenn ich dann wieder entferne, interagiere ich weiter mit seinen Pausen. Wenn ich auf Entfernen klicke , sollte das Element entfernt werden. Lass mich das nochmal versuchen. Da sind wir los. Lassen Sie mich also noch ein paar erstellen und lassen Sie mich sie dann löschen. Jedes Mal, wenn ich auf Löschen klicke, wird das Interface aktualisiert. Also werde ich dich einfach durch den Code führen, den ich dafür geschrieben habe. Es ist nicht wirklich ein Blazerkurs. Ich unterrichte letztendlich nicht das bizarre Vorgehen anderer Kurse dafür. Aber gerade im Kontext zeige ich Ihnen, dass es vom Standpunkt des Blazers aus nicht weiß oder sich darum kümmert, was die zugrunde liegende Infrastruktur dieser Rest-API ist. Es wird einfach tun, gibt es Dinge im Verhältnis zu unserer Rest-API? Ich habe ein brandneues Projekt erstellt und es war nur eine angenehmere Web-Assembly. Einfache Möglichkeiten, dies zu tun. Gehen Sie einfach zur Lösung und klicken Sie mit der rechten Maustaste auf Neues Projekt hinzufügen. Sie suchen nach Blazer WebAssembly nach oben. Ich benutze dotnet seeks gehen Sie weiter und erstellen Sie es. Und dann erhalten Sie hier standardmäßig eine Adresse, BCE-Adresse mit Umweltschützerin ihr gesagt wird , sie soll die Basisadresse sein , von der ich weiß, dass unsere Funktionen übertragen werden. In Ordnung, also wissen wir , dass das der Hafen ist. Wir hätten ein paar Tests mit Postman gemacht. Wir wissen, dass das unsere Standard-API geschrieben ist, okay? Das ist also die Basisadresse für den HTTP-Client, der in unseren Überzeugungen verwendet wird. Eine andere Sache, auf die ich hinweisen wollte , ist, dass wir Kerne einrichten mussten. Kerne sind Querursprungsreferenz. Okay, es tut mir leid. Hier ist die Definition. Also Cross-Origin-Ressourcenfreigabe. Da sind wir los. Das ist ein Protokoll oder eine Reihe von Regeln, die Ihre API mit Ressourcen regeln , die sich nicht auf demselben Server befinden. Während wir die Funktions-App mit Post-Money antizipierten, sah unser Problem nicht. Wenn ich jedoch übertrage, sende ich eine Anfrage von einer externen Quelle, dass diese Blades bei der Ausführung aktiviert sind, sie werden an einem anderen Port ausgeführt. Daher wird es insgesamt als eine andere App angesehen, dann würde es sie tatsächlich ablehnen. Das ist alles, was wir CORS auf einer Azure Functions in unserer JSON-Datei für lokale Punkteinstellungen aktivieren einer Azure Functions in unserer . Wir gehen zum Host und öffnen einen neuen Objektblock, in dem wir sagten, dass Kerne Star sind, was bedeutet, dass alle Anfragen annehmen. Sie haben keine Einschränkungen. Wenn wir es in Azure bereitstellen, wird dies natürlich auf der Azure-Seite behandelt. Für lokale Einstellungen müssen wir jedoch sicherstellen, dass dies vorhanden ist. Du kannst weitermachen und das machen. Ich hätte auch den Models-Ordner repliziert, also habe ich sie einfach neu gemacht, höre nicht in den Blades sind oben. Stattdessen habe ich den Namespace auf den Warenkorb aktualisiert, zumindest Punkt-Blazer-Punkt-Modelle da der Name der App Warenkorb ist, zumindest Punktblazer. Sie haben die Modelle oder Zugriff auf die Module dort. Eine andere Sache, die ich getan hätte, wäre natürlich, den Fitch Data Dot Racer zu aktualisieren . Oder wenn du einen neuen pH-Wert machen willst, liegt das an dir. Aber ich habe einfach alles auf einer Seite gemacht und ich werde dich einfach durch den Code führen, der geschrieben wurde. Der Seitentitel, wir haben die h1- und die p-Tags. Das ist alles nur Semantik. Das musst du nicht tun. Dann habe ich die Bearbeitungsform von top, wo ich den Eingabetext habe , den ich an ein Objekt namens item create binde an ein Objekt namens item und den Elementnamen akzeptiere. Hier im Bearbeitungsformular ist das Modell Item Create und bei gültigem Absenden rufen wir die Methode Handler create auf. Dann habe ich diesen Absende-Button für mein Bearbeitungsformular. Artikel erstellen ist oft ein Einkaufswagen-Artikel. Und ich habe nur eine Instanz davon und habe create gehandhabt. Wird nur Antwort immer der HTTP-Client sehen. Was bedeutet HTTP, das den HTTP-Client angibt, den ich in meine Komponente injiziere . Das wäre also schon da gewesen , weil ich Daten abrufen werde, um tatsächlich zusammenzustellen, wie Sie mit dem HTTP-Client interagieren können , damit Sie das nicht dorthin legen müssen. Es sollte schon da sein. Aber was ich im Handle create mache, ist das Leeren HTTP-Punkt-Post, da JSON sinkt, und dann den Einkaufswagen-Artikel posten. Und eigentlich habe ich gerade bemerkt , dass das falsch ist. Das sollte sein Einkaufswagen Artikel zu erstellen spielt wirklich keine Rolle im großen Schema der Dinge, aber lasst uns einfach damit arbeiten. Das sollte also ein Einkaufswagen-Artikel erstellt werden. Also veröffentliche ich einen JSON-Text oder JSON-Serialisierung des kreativen Einkaufswagen-Artikels. Und es wird API-Slash-Einkaufswagen-Artikel adressieren. Dieser API-Slash-Einkaufswagen-Artikel wird also gerade an unsere Basis-URL hier in der program.cs angehängt. Dann senden wir das Objekt Create Object über. Dann sagen wir, ob es sich um einen erzielten Erfolg oder einen Schlüssel oder keinen Inhalt handelt oder was auch immer wir gesehen haben, wir wissen, dass die verschiedenen Codes verschiedene Dinge darstellen. So sind alte wichtige Antworten erfolgreich, dann nennen wir sie einfach ein Gewicht auf initialisiertes Asynchron, das im Grunde nur das gesamte Thema neu zeichnet. Für den nicht initialisierten Asynchron sehen wir nur Artikel, bei denen es sich in Form von RE entsprechen um eine Reihe von Warenkorbsartikeln handelt, die http.get von JSON async Einkaufswagen . Und wir haben die gleiche Wurzel dort. Ich werde in diesem Beispiel nicht alles mit Architektur und Best Practices machen Architektur und Best Practices , ich zeige Ihnen nur einen schnellen Gewinn. Wenn du das alles willst , kannst du jonglieren. Meine Überzeugungen sind, dass Kurse nicht initialisiert sind. Async ruft alle Elemente und legt sie in dieses Objekt ein, das für die von Ihnen behandelten Elemente entwickelt wurde , sagt im Grunde nur, dass Sie alle Daten als JSON-Tool veröffentlichen, dies Endpunkt, und dann fahren Sie fort und aktualisieren Sie, sobald alles erfolgreich ist, wissen Sie, dass der Rest nur den Beispielcode für Wettervorhersagen ändern würde , der da war, und nur die Verwendung von Elementen ist das, was ich gesagt habe für Kosten und Änderung der Tabellenüberschriften gemäß meinen neuen Tabellenkopfzeilen basierend auf den neuen Daten. Sie dann für jedes Element in Items an Elemente, Denken Sie dann für jedes Element in Items an Elemente, die aus unserem API-Aufruf stammen. Ich aktualisiere oder zeige leider die verschiedenen Werte an. Nein, für den Checkbox-Abschnitt habe ich eine Eingabe, die vom Typ ist. Ich gebe ihm einfach einen Kurs, in dem es irgendwie nett aussieht. Der Wert wird an das Element gebunden. Quantity ist eine onchange. Dies ist ein Ereignis, das bedeutet, dass ich, wenn Sie den Wert der Chatbox ändern, dieses Methodenkreuzfeld aufrufen möchte das Element übergeben und den Wert der Ereignisse übergeben. Da es also weiß, dass es sich um ein Kontrollkästchen handelt, wird dieses Ereignis Daten enthalten, war es wahr oder falsch, ändern usw. Wo die Richtlinie in diesem Wert ist. Wenn diese Checkbox-Klickmethode aufgerufen wird, wird dieser Warenkorbartikel verwendet, und dies könnte einfach sein, wahrscheinlich sollte es wirklich das Update sein. Die Ports, egal welchen Objekttyp wir hatten, ihre mehrfachen Kurse mit dem Zusammenstoß hier verwendet ihre mehrfachen Kurse mit , da dies vom Typ Warenkorb ist , den ich versuche. Ich zeige Ihnen also nur, dass ich das Warenkorbgegenstandsobjekt hier nehme . Ich nehme den Prüfwert als meinen, da mein Ereignisargs-Wert ihn zu diesem Zeitpunkt zu einem Objekt machen muss. Dann formuliere ich mein Update-Einkaufswagen-Artikelobjekt und setze geteilt, von dem ich weiß, dass er eingestellt werden muss. Und dann schickte ich über g sun async, diesen Objekttyp. Und ich rufe URL auf und verwende dann Interpolation, ich bleibe nur bei item.name DID. Deshalb war es wichtig , den Artikel zu übergeben. Denn bei der Aktualisierung, um die Bedarfsdaten zu erfüllen, können sowohl das Originalelement als auch ich einfach die ID verwenden. Also übergebe ich diese ID und das gesamte Objekt mit den Daten, die das Update darstellen. Und wenn es dann erfolgreich war, zeichnest du neu. Dann haben wir für den Löschvorgang einen einfachen Button. Geben Sie ihm eine Bootstrap-Klasse, und klicken Sie dann auf, wir haben ähnliches Code-Ereignis und möglich mit dem Item. So möglich, dass die Details gelöscht werden können , obwohl wir diese ID wirklich nur benötigen. Also werden wir nur Virenanleihen sagen, http dot delete async, nicht als JSON, weil es kein JSON gibt, der über vernünftige Daten zum Analysieren weitergegeben werden muss , einfach löschen. Und der URI wäre APIs, diesen Einkaufswagen, den ich versuche oder item.name DID und dann zeichnen wir neu. Deshalb verstehst du das. Beginnt in Echtzeit, schauen Sie auf die Benutzeroberfläche, da ich jedes Mal neu zeichne, wenn der Vorgang erfolgreich war. Das ist es wirklich. Denn Beschnitt interagieren mit der API. Natürlich kann er je nach Ihren Bedürfnissen oder was auch immer etwas komplizierter werden. Natürlich könnte die API etwas komplizierter sein. Aber wieder einmal erzielen wir nur schnelle Gewinne. Und sobald Sie diese Kernkonzepte verstanden haben, können Sie immer darauf für Ihre zukünftigen Abläufe aufbauen. Das war's. Sie können an den verschiedenen Punkten Pause drücken und den Code replizieren. Ich scrolle einfach langsam genug durch , dass du in den verschiedenen Intervallen Pause drücken kannst. Sie können den gesamten Code sehen. Und ich würde Sie ermutigen mehr Endpunkte oder mehr Verhaltensweisen in der API aufzubauen und mehr Seiten auf Komponenten zu erstellen, mit dieser API zu interagieren. Stellen Sie erneut sicher, dass Sie Ihre Basisadresse aktualisieren und sicherstellen, dass Sie die Kurseinstellungen auf der API aktivieren , um sie gleichzeitig zu testen. Sie möchten nicht zur Lösung wechseln, klicken Sie mit der rechten Maustaste auf Eigenschaften. Und dann möchten Sie mehrere Start-up-Projekte auswählen. Sie können sowohl den Start als auch beide setzen, mit einem Debug beginnen, je nachdem, was Sie bevorzugen, basierend auf dem künstlerischen Prozess. Das ist es wirklich zum Testen mit einer Benutzeroberfläche. 30. Interaktion mit CosmosDB: Willkommen zurück Leute. In dieser Lektion werden wir einige der Änderungen durchgehen , die erforderlich sind, um mit der Datenbank zu sprechen. Die für diese Übung ausgewählte Datenbank ist eine 0 Cosmos DB-Datenbank. Wir haben bereits etwas Erfahrung damit. Wir haben es eher als Eingangstrigger oder Input-Binding betrachtet . Und insgesamt haben wir gerade die Daten weitergegeben und sie werden mit der Cosmos DB kommunizieren. Dabei werden wir einen etwas anderen Ansatz verfolgen, um nur Eingabebindungen zu verwenden, da es bestimmte Operationen gibt , die wir ausführen möchten. Ich glaube, es ist gemischt. Wir können den Code drei verschiedene Arten von Wellen schreiben , wenn wir die Eingabebindung verwenden, da das Gericht aufgrund der Situation anders aussehen wird oder wir ein bisschen konsistenter sein können . Also gehe ich mehr für Konsistenz in dieser Situation. Und ich werde euch zeigen, wie Sie Ihre Funktion für die Abhängigkeitsinjektion auf Hawaii einrichten können Ihre Funktion für die Abhängigkeitsinjektion auf Hawaii einrichten Verwenden Sie den Cosmos DB Client für diese Gesamtinjektion, die überall verwendet werden kann sonst in jeder anderen Funktion. Um loszulegen, möchte ich, dass wir zu neuen Werten gehen. Klicken Sie einfach mit der rechten Maustaste auf Ihr Funktionsprojekt und das Ziel, Bilder zu verwalten und dieses zu erhalten. Microsoft hat einen Punkterweiterungspunkt für 0 Punkt Webjobs mit Punkterweiterung Cosmos DB erstellt . Dieses Paket bietet Ihnen also tatsächlich eine API für Cosmos DB sowie Table Storage, aber wir werden uns jetzt auf Cosmos DB konzentrieren. Die nächste Sache ist das Erstellen einer Startklasse, die als Start-Klasse bekannt ist, ähnelt der, die Sie in jeder Dotnet Core-Anwendung sehen. Also haben wir einen Blazer hier oben. In dotnet sucht. Es sieht etwas verdichter aus als das, was Sie wahrscheinlich gewohnt sind, aber das ist so ziemlich die Startklasse , die sie irgendwie in einer Datei zusammengefasst haben. Dies ist im Grunde Bootstraps und fast Dienste bereitwillig zu sein. Ich bin für die Abhängigkeitsinjektion überall in der Anwendung verfügbar , sobald die Anwendung R12-Code ausführt. Das ist es also, was das bewirkt. Also haben wir unsere eigenen erstellt, ich nenne es startup.js. Und ich zeige dir einfach den Code und führe dich durch jede Zeile, damit wir eine volle Wertschätzung dessen haben , was passiert. also einfach mit der rechten Maustaste auf Ihre Funktion fügen Sie eine neue Klasse namens Startup hinzu. Keine CSU erhält möglicherweise einen Fehler oder ein Feedback , dass Sie einen bereits vorhandenen Funktionstyp erstellen. Das ist in Ordnung. Sie können das alles oder alles löschen, was nicht mit dem übereinstimmt, was ich auf meinem Bildschirm habe. Du gehst einfach weiter und fahre entsprechend. Wir haben die erste Annotations-Assembly, Doppelpunkt, und wir führen einen Funktionsstart durch. Es wird eine Art von Startup sein. Möglicherweise müssen Sie während des Vorgangs einige fehlende Referenzen angeben, also tun Sie das einfach entsprechend. Oder Namespaces sind Einkaufswagenliste. Das wissen wir schon. Und dann haben wir, oder tut uns leid, unser Klassen-Startup, das vom Start der Funktionen erbt. Dann haben wir Privates , die nur die Konfiguration der Konfiguration entfacht haben, ist die Root-Konfiguration gleich einem neuen Konfigurations-Builder, in dem wir die Basis sitzen, um das aktuelle Verzeichnis der Umgebung zu sein, das ist das Verzeichnis des Projekts. Wir fügen unsere JSON-Datei hinzu settings.js IN true, aber dann natürlich die lokale settings.js auf. Wir wissen also, wie wir später darauf zugreifen können. Und dann fügen wir Umgebungsvariablen hinzu und bauen dann einfach. Dann würde es Ihnen natürlich einen Fehler geben , der besagt, dass Sie die abstrakte Klasse implementieren müssen, die Funktionen starten und dies tun würde diesen Methodenstub für Sie generieren. Es ist eine öffentliche Überschreibung ungültig, konfigurieren. All das wird für Sie generiert, beide innerhalb dieser Methode, was wir tun möchten, ist Builder-Punktdienste zu sagen und ein Singleton hinzuzufügen. Ein Singleton bedeutet so ziemlich, dass alles, was Sie hier hinzufügen, Zugriff sein wird. Eine Instanz wird für Ihre Anwendung zugänglich sein . Also eine Verbindung oder Cosmos DB, die gleiche Verbindung zur Kosmos-DB wird jedes Mal verwendet , wenn wir auf diese Abhängigkeit zugreifen, ziemlich richtig? Wenn Sie mehr über Abhängigkeitsinjektion und Holdout gegen eine Goldmine erfahren möchten, werde ich natürlich mit dieser Null durchmachen. var-Verbindungszeichenfolge ist also gleich und sieht dann in der Konfiguration aus. Denken Sie daran, dass die Konfiguration alle diese Elemente kompiliert, einschließlich unserer Einstellungsdatei. Also haben wir diese Einstellung bereits als Datei, obwohl der Name anders ist, wird er kontextuell wissen, wo wir die Konfiguration finden wir die Konfiguration und mir die Cosmos DB-Verbindung besorgen wie haben wir es in unserer lokalen Einstellungsdatei genannt , oder? Also haben wir uns das schon angeschaut. Ich benutze den Emulator und zeige Ihnen in ein paar die Datenbank , die wir erstellt haben. Stellen Sie also einfach sicher, dass Sie diesen Schlüssel, die Cosmos DB-Verbindung, hinzufügen , und dann fügen wir diesen Emulatorschlüssel entsprechend hinzu. Also rufen wir diese DB-Verbindung und dann sehen wir, ob sie null oder leer ist, dann werfen wir eine Ausnahme aus. Andernfalls geben Sie eine neue Instanz des Cosmos Strength Builder mit dem Verbindungszeichenfolgen-Punkt-Build zurück. Das ist also unsere Start-Klasse , die wir noch einmal konfiguriert haben , damit wir alle von uns definierten Abhängigkeiten injizieren können . Wir definieren nur einen, der für den Kosmos-Kunden bestimmt ist. Lass mich nicht zu unserer Cosmos DB springen. Wir haben bereits etwas Erfahrung damit. Das sind unsere Milliliter. Sie können fortfahren und zu Ihrem Emulator gehen und diesen neuen erstellen. Wir haben also eine neue Datenbank, die ich Einkaufswagenartikel nenne. Dann lautet mein Sammlungsname Items. Und für meinen Schlüssel oder einen Partitionsschlüssel verwende ich diese Wortkategorien. Wir werden also einige Änderungen an den Modellen vornehmen , wie wir sie haben. Aber denken Sie daran, dass die Partitionsschlüssel eine Hochgeschwindigkeitssuche mögen. So wie Indizes, Ihre Aufzeichnungen oder Ihre Dokumente, Zitat unquote, damit es schneller gefunden werden kann. Wir fügen also eine neue Eigenschaft namens category hinzu, was sinnvoll ist. Es ist eine Artikelliste des Einkaufswagens. Was ist die Kategorie? Ist es Essen, ist es Kleidung? Ist es ein Bedürfnis, ist nicht wollen usw. Damit können wir unser Gewebe auf den Daten aufbauen und das Nachschlagen beschleunigen, die Vorgänge gegen diese gesamte Datenbank beschleunigen. Du kannst weitermachen und das machen. Nachdem Sie die Datenbank erstellt haben, betrachten diese die Änderungen, die an unseren Modellen vorgenommen werden müssen. Die einzige Änderung, die ich mache, ist der Artikel des Einkaufswagens. Und ich mache ein GNS3-Create. Lassen Sie mich zuerst mit einem Einkaufswagen-Artikel gehen. Warenkorbartikel, einer davon, dass er von der Tabelleneinheit erbt wird, die mit freundlicher Genehmigung dieser neuen Klasse, Microsoft Punktfenster, Punktspeicher-Punkttabelle, die in unserem neuen Paket enthalten ist. Sie können es also erben lassen. Sie müssen es nicht unbedingt tun, aber das Leistungsangebot , das es erben lässt , besteht darin, dass die Klasse oder das Modell wissen, dass sie tatsächlich Zugriff auf alle Eigenschaften haben , die erhalten wird immer dann berührt, wenn unser Dokument gespeichert wird, um viele andere Meta-Tags zu sehen. Sie haben sie wahrscheinlich bemerkt, als wir die Blog-Übung gemacht haben. Es gibt eine Reihe anderer Meta-Tags, die sie angehängt haben. Sobald es also von zwei Entitäten geerbt wurde, wird tatsächlich in der Lage sein, sie zu analysieren. Nein, ich habe auch JSON-Eigenschaftenanmerkungen zu unserer Eigenschaft id req hinzugefügt . Entschuldigung, diese JSON-Eigenschaft sieht im Grunde genommen, Ja, ich weiß, dass ich in C-Sharp World bin, beide in JSON Web, bitte treffen Sie mir eine gemeinsame ID. Die Relevanz davon ist Cosmos DB sucht für eine Immobilie mit gemeinsamer ID. Wenn wir diesen ID-Wert setzen, erhalten Sie tatsächlich eine Reihe von Pfeilen. Du kannst es selbst ausprobieren. Ich hatte eigentlich ein kleines Feld mit Hillary. Denken Sie daran, dass es das dort ablegen musste. Also kannst du es tatsächlich versuchen. Nachdem ich Ihnen den ganzen Code gezeigt habe und alles, was versucht wurde, erstellt werden, muss ich die Fehler sehen, die Sie erhalten. Sie werden sich beschweren , dass die ID-Spalte fehlt , obwohl sie da ist. Also sehen wir es nur, wenn Sie in JSON sind, identifizieren Sie sich bitte als gemeinsame ID und dann wird Cosmos DB es sehen und sehen können, okay, ich sehe die ID-Wert-Gefängnisse. Natürlich sind wir nicht allein in Cosmos DB, um die ID zu generieren. Das machen wir. Das bleibt also das Gleiche. Ich habe auch eine andere Eigenschaft namens category hinzugefügt. Wie ich gerade sagte, Kategorie wird unser Partitionsschlüssel sein. Und genau wie bei der ID müssen wir sie wissen lassen, dass es sich um eine gemeinsame Schlüsselkategorie handelt. Natürlich muss dies nur die Regel für das ganze Jahr mit dem Partitionsschlüssel übereinstimmen. Also lasse ich es einfach so. Capital C für Codebook-Befehl Z für JSON. Dann füge ich innerhalb des Erstellten auch diese Kategorie ein. Wenn Sie also das Element erstellen, sehen Sie den Namen und die Kategorie. Und natürlich gibt es bessere Möglichkeiten, dies zu tun. Sie könnten Enums verwenden, Sie könnten eine Auswahlliste verwenden usw. Aber im Moment werden wir es einfach halten, nur damit wir die Übung zum vierten Mal verstehen können , die Updates, die tatsächlich optional sind. Eigentlich nehme ich es raus und nenne es einen Code, wenn wir da sind. Also werde ich das entfernen, damit sich das Update nicht ändert. Also fügen wir hier nur eine Kategorie hinzu. Und für den Warenkorb-Artikel fügen wir hinzu, dass Andy Studenten auf dem Grundstück sowie die JSON-Eigenschaft über der ID liegen. Es ist schön vorbeigekommen und lasst uns zu unserer Funktion springen. Nein, du würdest einen bemerken, ich habe alle statischen Schlüsselwörter entfernt, öffentlich. Dies war eine öffentliche statische Klasse. Ich habe das entfernt, weil statische Klassen keine Konstruktoren haben können. Wir brauchen das Konstrukt der oralen Injektion. Und andere Sache ist das tut mir leid, ich habe diese Zeile gerade entfernt. Wenn du also wieder ignoriert anfängst , entschuldige ich mich. Eine andere Sache ist also, dass wir keine statischen Methoden haben können , weil wir den Code dort ändern müssen. Und das bedeutet, dass wir das Private benutzen müssen. Felder, die hineingehen. Während wir erklären, was hier vor sich geht, zeige ich Ihnen nur das Gelehrte, das Sie bekommen würden wenn Sie die Methode anheben, statisch ist, also keine statische Klasse und keine statischen Methoden. Okay, lasst uns Zeile für Zeile durchgehen und sehen, was hier passiert. Zuerst injiziere ich die Kosmos-Behauptungen, dass der Kosmos-Kunde von Anfang an vorbeikommt. Dies gibt also eine Instanz oder die Abhängigkeit zurück , die für den Zugriff auf den Cosmos Client erforderlich ist. Also schreibe ich nur einen Konstruktor, der für Konstrukteure CTO, unsere Wanne, Wanne eingekreist ist ist. Und dann könntest du eigentlich einfach in den Kosmos Kunden schreiben . Und dann wird es mit Kontrollpunkten angeboten, das Feld für Sie zu initialisieren und zu injizieren . Also zeige ich eine Tastenkombination. Du kannst es schnell einschreiben. Wir wollten einen privaten schreibgeschützten Kosmos-Client. Und das wird innerhalb unseres Konstruktors initialisiert. Und dann haben wir einen privaten Container, Dokumentencontainer. Und dann werden wir sehen, dass der Dokumentcontainer Cosmos client.stop Container entspricht , indem der Name Einkaufswagen Artikel mit den Kollegen auf Artikeln enthält. Wenn Sie also den Mauszeiger darüber bewegen, werden Sie sehen, dass es nach der Datenbankkennung und der Container-ID gefragt wird. Mit diesem Tool. Mit dem Dokumentcontainer kann ich jetzt auf die Datenbank zugreifen, auf die Elemente, die für alle Operationen ausgeführt werden, die ich brauche. Ich habe darauf hingewiesen, dass ich das etwas konsistenter finde , um mit ein paar Zeilen zu tun , als das Schreiben einzelner Trigger Code pro Methode ist. Was passiert wäre, ist, dass ich Cosmos DB schreiben müsste . Dann nach dem Initialisierer Cosmos DB, um die Verbindungszeichenfolgenwerte zu haben. Ich werde generell so schnell machen, wie es aussehen würde . Das war's. So würde unsere Notation als Eingabebindungen aussehen. Als wir uns also vorher Eingabebindungen angeschaut haben, haben wir es mit dem TypeScript-Projekt gemacht, wo wir tatsächlich die Funktion dot js JSON-Datei ändern. Es gibt keine Funktion , die JSON-Datei für uns generiert wird, wenn wir die C-Sharp-Projekte verwenden. Also haben wir tatsächlich die Bindungen und Trigger genau hier in unserer Funktion Wie bei Rotation eingefügt . Es würde also Cosmos DB sagen, wie lautet der Datenbankname, wie lautet der Sammlungsname und dann die Verbindungszeichenfolge, die natürlich nur auf den Namen in den App-Einstellungen verweisen würde . Und dann würden wir es einen Dokument-Client nennen, der Kunde weiß, Sie hier möglicherweise verschiedene Datentypen verwenden, um alle Artikel abzurufen . Wir würden den Client verwenden und dann würde der Abfragecode so aussehen. In Ordnung, zuerst müssten wir also einen URI finden oder einen URI für die Sammlung generieren. Also sage ich URI oder Factory Dot erstellen, Entschuldigung, erstellen Sie Dokumentensammlungs-URI, und dann geben wir ihm diese. Also hier siehst du, dass ich diese Strings überall wiederhole . Sie möchten wahrscheinlich darüber nachdenken eine Konstante plus eine Konstante für den Datenbanknamen oder die Sorge um den Sammlungsnamen usw. zu verwenden. die die Datenbankkennung und die Sammlung. Und dann würden wir sagen, dass ich die Abfrage relativ zum Datentyp dokumentiere , wo ein Boot abfragen soll. Und dann erstellt der Client dokumentierte Client-Punkt eine Dokumentabfrage. Und dann geben wir den URI als Dokumentabfrage ein. Und all dies kann auf den Hub erweitert werden , wo die Klausel gleich ist, um sogar so zu sagen wie wir sind, und dann in eine Bedingung gebracht werden, nach der Sie die Dokumente finden wollten. Es könnte sein, dass Sie eine Suche finden oder machen möchten , die sich für so etwas wie eine Suche als nützlich erweisen würde . jedem Fall würde dies alle Dokumente zurückgeben, und dann würden wir sagen, obwohl die Abfrage mehr Ergebnisse hat, würden wir sie abfragen und dann möglicherweise zumindest füllen, was wir zurückgeben möchten. Also hatten wir diese Liste von Top. Das habe ich auch entfernt. Und ich benutze es hier nur vor Ort. Sie würden also einfach jedes Element zur Liste hinzufügen. Das war es, was Sie getan haben, wurden nicht der Ansatz gewählt, den ich Ihnen nur zeige , weil es gut ist, Ihre Optionen zu kennen. Also werde ich das kommentieren, und ich werde das kommentieren. Zumindest wenn Sie sich den Quellcode später ansehen , können Sie sehen, dass dies mit diesem Code übereinstimmt. Da ich jedoch den Client an die Spitze injiziert habe, kann ich jetzt geradeaus gehen und C. Zuerst habe ich meine Liste hier generiert, deklariert. Und dann sage ich, dass var-Elemente gleich dem Dokumentcontainer Punkt sind, bekomme Artikelabfrage I Iterator relativ zum Typ Einkaufswagen Artikel. Dies wird so sein, dass ich losgehen und einfach alles bekommen muss losgehen und einfach alles bekommen und sie werden sehen, dass Gegenstände mehr Ergebnisse haben. Wir würden einfach weitermachen und hinzufügen. Ein Drei-Zoll-Werkzeug oder eine neue Liste. Okay, also ist die var-Antwort gleich den Elementen, die als nächstes asynchron gelesen werden. Und dann lassen wir diesen Bereich einfach in unsere Dropdown-Liste in unsere Liste fallen. Und dann kehren wir wieder zurück. Denken Sie darüber nach. Ich könnte wahrscheinlich sogar diese Liniendiagramme machen. Mal sehen, ob das funktionieren würde. Und C Items Dot gelesen. Als nächstes sehen Sie Punkte. Okay, also ist es ein asynchroner Softkurs ich gerne auf unsere Breite hätte. Nun, wenn ich das mit unseren Gewichten mache, dann könnte ich eine To-Do-Liste auf dem erstellen, was zurückgegeben wird. Da sind wir los. Also brauche ich wahrscheinlich sowieso nicht einmal das alles. Zwei Zeilen. Weißt du, manchmal schreibst du etwas und dann merkst du , dass ich es etwas besser hätte schreiben können. Also werde ich das vorerst kommentieren , dass wir zurückkommen und testen und validieren können , ob mein Refaktor wie erwartet funktioniert. Aber du siehst das Ziel, die Gegenstände zu bekommen, und dann bekommen wir sie in den gelesenen Punkten macht das Asynchron, was im Grunde nicht die Gegenstände sind, die in unseren Slips oder in Klammern enthalten sind, so dass können die beiden Liste auf alles aufrufen, was zurückgegeben wird. Okay, das ist es, was wir zurückkehren, als wir versuchten, alles zu bekommen. Also lasst uns weitermachen. Der wird nach ID. Hier wäre es also wie basierend auf dem , was wir zuvor gemacht haben, wo wir tatsächlich diese Bindung hatten, wo wir nach der ID für den Partitionsschlüssel gesucht haben , der in diesem Fall eine Kategorie ist. Also hier habe ich die Route geändert, um zu sagen, gib mir ID und Partitionsschlüssel. Dann sind das die Werte, die ich verwenden werde, um meine Abfrage auszuführen. Ich hätte tatsächlich die gleiche Art von Bindung verwenden können, die zuvor in dieser Methode hier verwendet hätte . Das würde uns tatsächlich helfen, den einen Datensatz zu erhalten, der mit dieser ID und dem Partitionsschlüssel übereinstimmt. Hier ist ein Beispiel dafür , wie das aussehen würde, dieser Bindungscode. Also Cosmos DB, wir haben denselben Datenbanknamen, Sammlungsnamen und dieselbe Verbindungszeichenfolge. Und dann sagte ich ihm, dass die ID an die ID gebunden ist , die vom Parameter hier hereinkommt. Der Partitionsschlüssel ist in ähnlicher Weise an den Partitionsschlüssel gebunden, der hier hereinkommt, und dann wird dieser verstreut. Gehen Sie zu Cosmos DB, suchen Sie nach und speichern das Ergebnis anstelle des Warenkorbsartikels. Und sobald wir einen Einkaufswagen haben, wären Sie nicht so einfach wie Rückgabe sperriger Objektergebnisse, den Warenkorbartikel. Aber wie gesagt, bevorzuge ich eine Art Konsistenz, da dieser Bindungscode sich fast völlig von diesem Bindungscode unterscheiden wird. Und du musst sehr vorsichtig sein und ich sage nicht, dass es schlecht ist, ich verprügele keineswegs den Code. Ich sehe, dass es nicht meine Präferenz ist, aber ich zeige Ihnen, welche Möglichkeiten Sie haben. Also werde ich das kommentieren , damit der PCAOB es als Bezugspunkt ist. Aber was ich hier getan habe, ist zu sagen, dass var item dem Container für Gewichte entspricht , lesen Sie den Artikel asynchron. Also bekomme die Artikelabfrage ich Iterator. Das ist alles, was wir zu unserer Sammlung bekommen. Dieser ist einer, den Sie wollen, einer möchte einen Warenkorbartikel und ich gebe ihm die ID, und ich gebe ihm den Partitionsschlüssel, der Kategorie ist. Natürlich habe ich die Parameterliste ebenfalls um die ID und die Kategorie erweitert . Und ich habe gerade eine Route gemacht , auf die ich hinweise, um die ID Slash-Kategorie darauf zu haben. Wenn Sie versuchen zu bekommen, sollten Sie die ID dessen, was Sie erhalten, sowie den Kategorienamen übergeben die ID dessen, was Sie erhalten, . Sie können mit Glukose sprechen. Das machen wir. Und dann wird der Artikel tatsächlich mit einem Statuscode zurückkommen. In Ordnung, also wird es sagen, ob der Statuscode dem HTTP-Statuscode und dem Telefon entspricht , dann geben wir keine Telefonergebnisse zurück. Alles klar, nett und einfach. Ansonsten gehen wir weiter und geben die alten wichtigen Ergebnisse zurück sind in Ordnung. Objektergebnisse mit item.name-Ressource. Sie können also sehen, dass das bei einem Versuch ausbrach, weil ich etwas falsch gemacht habe , als ich das geschrieben habe und ich die Ausnahme sehen musste. Sie können das also nicht tun, wenn nötig, aber es ist wirklich und wirklich nicht unbedingt. Also habe ich es entfernt, nur damit ich den Code vereinfachen und dir genau zeigen kann , was benötigt wird. Es ist also ganz. Sie würden einen Datensatz aus dem Cosmos DB-Datenspeicher nachschlagen . Sehen wir uns nun an, was passiert , wenn wir unser Create machen. Okay, was wir hier wirklich und wirklich machen ist zu sehen, dass wir die gleiche Art von Bindungen machen wollen. Also habe ich es natürlich kommentiert, aber wenn man es sich anschaut, ist es dieselbe Art von Bindung, außer dass diese eine äußere Bindung für Output-Bindings wäre . Das ist also eine Input-Bindung. Dies ist eine Output-Bindung, weil sie dann etwas an die Cosmos DB ausgeben wird. Im Wesentlichen geht es darum, die Cosmos DB Collection Datenbank zu bekommen, das wissen wir alles. Aber dann der letzte Parameter hier. Ist vom Typ I Async-Collector relativ zum Datentyp. Wir wissen, dass wir einen Prozess und dann den Namen davon wollen. Lassen Sie es mich also in die gleiche Linie legen, damit es etwas einheitlicher aussieht. Das ist der Datentyp, den wir verwenden müssen , weil wir asynchron arbeiten. Wenn du es nicht asynchron gemacht hast , machen wir einfach eine Alt-Variable. Sie können keine alten Verbals anstelle einer asynchronen Methode verwenden, wir müssen den Async-Collector relativ zum Datentyp und dann zum Warenkorbartikel verwenden. Und später im Code, nachdem wir den Warenkorbartikel und alles bekommen haben , müsste tatsächlich so etwas tun , um ihn der Sammlung hinzuzufügen. Also lass uns sehen. Artikel im Einkaufswagen ALT. Also ein Auto zu diesem Namen, das Artikel im Einkaufswagen hätte sein sollen . Ich nenne das nur, weil wir wissen, dass es ein ALT ist. Es geht alles in die Cosmos DB, oder? Also Artikel im Einkaufswagen, nicht asynchron hinzufügen, und dann geben wir den Artikel weiter , den er hinzufügen soll. Das wäre wirklich das, was am Ende dieser Operation passieren würde . Der kommentierte alte Code, genauso wie ein kälter es kommentiert . Was wir jedoch tun, ist, dass wir sehen, natürlich wissen wir, dass wir die Daten aus dem Körper beziehen, sie entsprechend analysieren und dann einen neuen Artikel vom Typ Einkaufskarten erstellen, und dann einen neuen Artikel vom Typ Einkaufskarten erstellen auf dem wir geben Sie den Namen und die Kategorie ein, die durch unsere Anfrage eingegangen ist. Und dann sehen wir Belegmenge und R Punkt erstellen Artikel asynchron. Wir geben Ihnen den Artikel und geben ihm dann den Partitionsschlüsselwert. Die Relevanz dieses Partitionsschlüsselwerts besteht darin, dass wir die Kategorie verwenden, die als Daten gesendet wurde, oder? Wenn ich diese Kategorie gesagt habe, wenn Sie diesen Artikel und diese Kategorie erstellen, erstellen wir sie, um diesen Wert festzulegen. Als wir also unser Blog-Beispiel gemacht haben, wo ich die ID sowohl für ID als auch für den Partitionsschlüssel verwenden würde . In diesem Fall zeige ich ein praktischeres Beispiel. Jetzt möchten Sie es wirklich basierend auf einer Kategorie oder Gruppierungen schneiden . Wir verwenden die Kategorie als Gruppierung. Sobald Sie das getan haben, geben wir einfach die alten Hauptobjektergebnisse mit dem Element entsprechend zurück. Also würde eine dieser Zeilen relativ zu den unkommentierten schwer vor Gericht für Erwachsene kommen. Schauen wir uns das Update an und weil ich die Kategorie aus dem Artikel zum Aktualisieren des Einkaufswagens entfernt habe , erhalten wir diesen Fehler, aber wenn wir dort ankommen, können wir es uns ansehen. Nein, ich werde keine Zeit damit verbringen, nach Alternativen für den Put und das Löschen zu suchen , zu dem Sie gehen können, um diese zu recherchieren. Ich werde einfach voranschreiten und dir zeigen, wie ich es gemacht habe. Also habe ich das Root aktualisiert oder muss die Route aktualisieren , um die Kategorie einzuschließen. Also habe ich nicht in die Kategorie aufgenommen, weil wir so, wie wir es machen, immer diesen Partitionsschlüssel brauchen. Also muss ich dies auf die Kategorie ausdehnen. Natürlich ist die Methode gesetzt. Also bekommen wir die Anforderungsdaten und analysieren sie. Und dann werde ich sehen, ob unsere Artikel, ich werde gehen und das Element aus der Datenbank montieren. Also verwenden wir denselben Code, der in der GIT-Single verwendet hätte , oder? Nun, dieses Mal kommt der Partitionsschlüssel aus unserer Parameterkategorie, oder wir gehen einfach Wege an. Also muss ich sicherstellen, dass ich String-Kategorie einfüge. Und wenn es den Gegenstand gefunden hat oder nicht, wird es überprüfen, währenddessen Schlüssel. Wenn es gefunden wurde , sagen wir weiter Artikelpunkt-Ressource. Die Daten, nachdem sie fertig sind, Doktorandendaten in der item.name-Ressource gespeichert. Aus diesem Grund haben wir die Artikelpunkt-Ressource zurückgegeben , die nicht nur auf den Artikel gestiegen ist. Ich weiß nicht, ob ich darauf hingewiesen habe. item.name, source und dann aktualisieren wir alles, was wir brauchen, um auf nirgendwo zu aktualisieren, wo ich im Collected aktualisieren wollte . Wenn Sie es also erweitern, um einen Namen auf dem zu haben, was auch immer es sein wird, dachte item.name Ressource diese Eigenschaft. Und dann sind wir Gewichtungsdokumentcontainer dot upsert item async, wo wir die Artikelpunkt-Ressource zu viel zurücksenden. Nachdem wir die Artikelpunkt-Ressource aktualisiert haben, senden wir sie zurück. Dann werden wir das sowieso zurückgeben, als aktualisierte Daten. Im Delete aktualisieren wir das Root erneut. Also nehmen wir die Kategorie als Partitionsschlüssel. Und dann werden wir nur sehen, dass ein Löschelement für Gewichtungsdokumente angezeigt wird. Wir sehen, dass wir einen Warenkorbartikel löschen. Wir möchten die ID und diesen bestimmten Partitionsschlüssel löschen . Und dann geben wir das Ergebnis zurück. Das ist es im Grunde für diese Operation. Alles klar Leute, also lasst es uns an allem testen, was wir tun. Immer wenn wir etwas Cooles machen, müssen wir es testen. Ich werde nur Postman zur Sprache bringen und ich habe bereits einen Test für die Nachkriegszeit gemacht , die ich geschaffen habe, und ich habe dir die Kategorie Obst gegeben. Hier ist eine erfolgreiche Rückkehr. Wir können gehen und holen. Also das wird alles und ich habe zwei Rekorde da drin, die Sonne, die und ich Äpfel haben. Einer gehört zur Kategorie Lebensmittel, eines gehört zu einer Kategorie von Obst. Früher, als ich statistisch war, habe ich tatsächlich Bedürfnisse und Wünsche als Test verwendet. Und was mir aufgefallen ist, war, dass es tatsächlich eine 500 zurückgegeben hat, oder? Also habe ich einen Einkaufswagen ID-Karte, Partitionsschlüssel, also sollte mir das wirklich 404 geben. Es bedeutet, dass du nicht finden kannst, wonach ich suche. Ein 500 zeigt an, dass es auf meinem Server ein Problem gibt , das nicht korrekt ist. Wenn Sie hier hinschauen, werden Sie feststellen, dass es tatsächlich eine Ausnahme auslöst , da der HTTP-Client , der den Aufruf von Cosmos DB tätigt , eine Methode enthält , die besagt, dass unsere , die besagt, dass Erfolgscode sicherstellen. Wenn es etwas anderes als 200 oder einen dieser 200-Antwortcodes sieht , wird tatsächlich eine Ausnahme ausgeführt. Obwohl es sieht, dass es sich um 404 handelt, wirft es eine Ausnahme aus, die sich als 500 für den Kunden manifestiert, was wir nicht wollen. Was ich also getan habe, ist es ein bisschen neu zu gestalten. Also zeige ich dir den Code, der aufgerufen wird und der eine Ausnahme auslöst. Mein Refaktor würde mich dazu , diesen Anruf innerhalb des Versuchs zu fangen. Dann gebe ich die alten Schlüsselobjektergebnisse zurück und dann 40 fangen. Ich werde sagen, fangen die Kosmos-Ausnahme in Form eines Objekts namens E. So Cosmo, also ist eine Ausnahme benutzerdefinierte Ausnahme, die von dieser Methode ausgelöst wird. Und wenn der Statuscode gleichwertig ist und wir einfach den integrierten Statuscode E-Norm verwenden können , um nicht angerufen zu werden, möchten wir einen neuen 404 zurückgeben. In Ordnung, das ist also mein literarischer Faktor. Also starte ich das neu und versuche es noch einmal. Wenn ich das noch einmal ausführe, stelle ich einfach sicher , dass dies läuft. Wenn ich das also noch einmal ausführe und auf Senden drücke, nein, gibt es keine Instanz oder es gibt keinen Hinweis auf eine Ausnahme im Protokoll und wir kommen von 404 ab, also ist das viel besser. Ich wollte das als Essen. Lass mich einen Wagen probieren. Anfragen, die keine Vier oder Vier oder eine 500 geben sollten , und los geht's. Wir können den Datensatz erfolgreich abrufen. Jetzt versuchen wir es. Anfangs hatte ich die Kategorie , in der ich bereit bin, die Transportkiste zu nehmen, und ich habe sie einfach bei gesammelt lassen, stimmt, dass diese unseren ID-Wert aktualisieren. Also die ID und die Partitionsschlüssel, die für den Put benötigt werden, lassen Sie mich beides setzen und dann aktualisieren. Jetzt wirst du sehen , dass das stimmt. Zunächst wissen wir, dass es falsch war. Wir können sehen, dass es stimmt. Das Update funktioniert. Dann lasst uns löschen. Und noch einmal müssen wir unsere ID und einen Partitionsschlüssel für das Löschen eingeben . Also lass mich das einfach machen, und das ist eine 200. Okay. Wenn ich also versucht habe, wieder zu kommen, dann bekomme ich nur einen. Unser gesamter Code arbeitet also mit unserer Cosmos DB. Wenn Sie dies weiter validieren möchten , können Sie natürlich die MLA aufrufen oder MLA betrachten, um sicherzustellen, dass es vorhanden ist, und dann alle Ihre Anpassungen entsprechend vornehmen . Spielen Sie damit herum, erforschen Sie, sehen Sie, was möglich ist. 31. Updates für die Benutzeroberfläche: In Ordnung Leute, also haben wir einfach unseren Code durchgegangen und unsere Anwendung für die Verwendung von Cosmos DB eingerichtet, richtig, also lassen Sie uns schnell einige der Änderungen an der Benutzeroberfläche durchgehen , die vorgenommen werden müssen. Da wir die Roots-Informationen für einige unserer Endpunkte aktualisiert haben, wie wir geändert haben, benötigen wir auch den Partitionsschlüssel, solche Sachen. Natürlich müssen die Endpunkte entsprechend aktualisiert werden. In unserem Kunden können wir den Route-API-Endpunkt oder die Basisadresse so belassen , wie sie ist. Aber dann werde ich in unserer Komponente einige Anpassungen am Update und dem Löschen vornehmen . Für die Updates. Wir hatten gesagt, dass ja, wir nehmen die ID, aber wir möchten auch, dass die Kategorien bereits Zugriff auf den Artikel haben. Also sage ich nur Schrägstrich, füge den Kategoriewert auch den gleichen für das Löschen hinzu. Wir werden die Kategorie einfach hinzufügen. Und das ist wirklich alles, was es gibt , um diese Endpunktanrufe zu aktualisieren. Wenn Sie es erweitern, um eine detaillierte Rede zu haben, in der Sie auf klicken, sehen Sie sich natürlich eine detaillierte Rede zu haben, in der Sie auf klicken, sehen nur das Detail eines Datensatzes an, den Sie berücksichtigen müssen. Ich meine, lösche einfach diesen Code und zeige dir ein weiteres Update, das gemacht wurde. Anfangs hatte ich das als Wert gleich und es wurde zum Bool geboren, aber das sollte überprüft werden. Das aktivierte Kontrollkästchen für den Eingabetyp entspricht dem Wert, der ist. Und dann haben wir dieses Ereignis und nichts ändert sich für irgendetwas anderes. Ich werde das einfach schnell testen. Okay, das ist also unsere Benutzeroberfläche. Ich werde das noch einmal testen, um mit Cosmos DB zu helfen. Und die Kategorie wäre zufällig. Erstellen Sie einen Einkaufswagen-Artikel. Da sind wir los. Alles klar. Natürlich könnten wir den Code, den er aus den Textfeldern leert, immer aktualisieren den Code, den er aus den Textfeldern leert , solange etwas erfolgreich hinzugefügt wird. Wissen Sie, bevor Sie bemerkt hätten, dass ja, er hat Kugel gerufen. Der Prüfwert zeigte nicht an, wann er wahr war oder nicht, also haben wir ihn gerade aktualisiert. Wenn ich das überprüfe, lass mich einfach das Konsolenfenster aufrufen, damit du siehst, dass es das Update aufruft. Da ist es The Put, was sich erfolgreich nennt. Wenn ich also beim Comeback von dieser Seite wegnavigiere, wird eine neue Abfrage ausgeführt. Und manchmal, wenn Sie die Konsole stören , wird sie pausiert. Aber da ist es, das ist die neue Abfrage und weiß, dass der Prüfwert angezeigt wird. Wenn ich also lösche, können wir sehen, dass die Funktion aufgerufen wurde, aber das ist nicht neu zu zeichnen, also kann ich das wahrscheinlich noch einmal besuchen. Aber wenn ich weggehe und zurückkomme und erlaube, dass es den Git ausführen kann, dann sehen wir hier, dass es tatsächlich gelöscht wurde. So können wir wahrscheinlich den UI-Code aktualisieren , um ihn nach dem Löschen ordnungsgemäß neu zu zeichnen. Die schnelle und einfache Lösung dafür besteht darin, die Ereignisrückrufmethode zu ändern oder zu klicken. Anstatt also so zu tun, wie wir es mit den Ereignisargen gemacht haben, und dann rufen wir den Methodennamen hier auf. Wir werden nur unser Anzeigenschild haben, Klammern öffnen und dann öffnen und schließen. Es ähnelt eher einer Delegiertenfunktion und wir delegieren sie an unser Löschklickelement. In Ordnung, so ziemlich viel wird das Problem des Neuzeichnens nur lösen, denn die Art und Weise, wie die Komponente geladen wird, die wir zuvor gemacht haben, würde tatsächlich versuchen, alles vorher neu zu laden hat tatsächlich registriert, dass die Artikelliste aktualisiert wurde. Und eine andere Sache, die Sie sehen könnten, ist, eine Liste anstelle eines Arrays zu verwenden , das wirklich wie normaler Materialeffekt ist wie normaler Materialeffekt Ich bevorzuge nur Listen. Beide Bereiche könnten effizienter sein. Das ist abgesehen von dem Punkt an diesem Zeitpunkt, so können Sie diese Löschung erhalten, um die Seite richtig neu zu zeichnen. Aber das ist es wirklich für die Änderungen die für unseren Kunden erforderlich sind. 32. Section – Erstelle REST API: In Ordnung, also wo es ein weiterer Meilenstein und wir werden nur einige der wichtigsten Diskussionspunkte dieser Aktivitäten überprüfen . Hauptpunkt Nummer eins, wir hoffen, dass wir wissen, dass wir eine Funktion mit einer Datei oder einer Datei mit einer Funktion erstellt haben. Niemand hat bemerkt, dass wir mehrere Funktionen in derselben Klassendatei haben können , was im Fall von uns, eine Rest-API zu erstellen etwas effizienter wäre, wenn es darum , nicht alle damit verbundenen Endpunkte oder Verhaltensweisen über mehrere Dateien hinweg, aber sie nur in einer Datei für eine Referenz haben. Wir haben uns auch angeschaut, dass wir die Funktionsnamen getrennt von der Wurzel definieren können . Mit unserer Definition der Regeln könnten wir RESTful API und Mentee und die Standardangebote tatsächlich nachahmen . Wir können verschiedene Operationen wie GET, post, PUT und Delete enthalten. Und wir haben auch alte Passform oder Wurzeln mit Parametern , die übergeben werden müssen , die automatisch entbeint werden, relativ dazu, dass sie im Methodenkopf vorhanden sind. Das sind also einige Dinge , die wir uns angeschaut haben. Wir haben uns keine Sicherheit angesehen, die das tun wird, wenn wir auf Ihre Seite gehen , wenn wir dies veröffentlichen. laufen also alle auf Autorisierungsebene anonym. Einer der Gründe, warum Sie es nicht im Folgenden zeigen oder gar Master machen möchten , ist, dass bei jeder Anfrage dieser Schlüssel Gefängnisse sein müssen. Das haben wir uns in zukünftigen Lektionen angeschaut. Ich weise nur darauf hin, warum wir für alle unsere API-Operationen anonym geblieben sind. Wir haben uns auch mit der Integration in unsere Daten befasst. Und wir haben gesehen, dass Sie es immer als Bindung hinzufügen können, basierend auf dem Ganzen, das Sie damit integrieren, der Code wird anders aussehen. Also habe ich die kommentierten Snippets eingefügt , die mit der Operation bei Handschrift einhergehen würden . Ich hatte jedoch einen anderen Ansatz gewählt denn wenn wir Bindungen verwenden, basiert jede Methode auf der Art der Bindung oder der, die wir machten. Die Bank benötigt möglicherweise andere Datentypen und verschiedene Möglichkeiten, mit dieser Bindung zu interagieren. Anstatt das zu haben, wissen Sie, all diese Änderungen überall, ging ich stattdessen mit der Option für die Abhängigkeitsinjektion, ging ich stattdessen mit Option für die Abhängigkeitsinjektion bei der ich die Kosmos-Clients verwende. Wir haben eine Startup-Klasse eingerichtet, die die Schriftart gestartet hätte, die wir wollen, unseren Cosmos Client. Und das bekommt er von der Cosmos DB-Verbindung, die in meinem lokalen settings.js SON gespeichert ist. Und natürlich emulieren wir das mit dem Speicher-Emulator, zumindest für nein. Und nachdem ich das getan habe, kann ich wissen, dass ich überall injiziert wurde. Ursprünglich hätte man öffentliche statische Klassen und statische Methoden bekommen. Ich musste das gesamte statische Schlüsselwort nehmen, um unsere Abhängigkeitsinjektion mit diesem Dokumentcontainer zu unterstützen , auf den wir uns tatsächlich verlassen konnten. Ich bin mehr in meinem Buch konsistent WE der Vielfalt im Code, um bestimmte Dinge zu erreichen. Wissen Sie, dass ich Ihnen deshalb die Optionen gebe da verschiedene Falten, verschiedene Striche, verschiedene Situationen unterschiedliche Hinrichtungen erfordern können , oder? also nicht unbedingt sehe , dass es so ist, wie es gemacht werden muss, zeige ich Ihnen nur, wie ich es bevorzuge. In Ordnung. Das ist also wirklich alles, was es zu oder API gibt. Wir haben uns auch angeschaut , dass wir mit unserer Cosmos DB unseren Partitionsschlüssel einbeziehen müssen. Und dabei mussten wir sicherstellen, dass unser Modell, das unsere Cosmos DB-Tabelle repräsentiert, Jesus On Property ID und den JSON-Eigenschaftsnamen hat Jesus On Property ID und den JSON-Eigenschaftsnamen , die übereinstimmen oder den Namen des Partitionsschlüssels entsprechen. Das letzte, was wir gemacht haben, war nur das Update oder die Benutzeroberfläche, um sicherzustellen, dass es die neuen Straßen und alles andere widerspiegelt. Das ist es wirklich für dieses Modul, ich hoffe, dass Sie viel erreicht haben und ich möchte, dass Sie sich inspiriert fühlen, dies selbst zu tun. Man sieht, dass der Photoshop ziemlich leicht ist. Es ist eine einfache Möglichkeit, Code zu schreiben und Dinge mit dem gesamten Overhead von zweiminütigen Projektdateien und Konfigurationen zu erreichen, die mit all dem Gesagten und Erledigen dem gesamten Overhead von zweiminütigen Projektdateien und benötigt werden. Wir sehen uns im nächsten Modul. 33. Azure Function Deployment: Alles klar Leute, willkommen zurück. In diesem Abschnitt werden wir uns das Publizieren oder eine 0 Funktionen anschauen , die ziemlich in einer 0 hoch sind. Es gibt also eine Reihe von Nuancen, auf die wir achten müssen. Wir haben schon einmal über die Hosting-Modelle gesprochen, aber wir werden sie uns noch einmal ansehen. Und wir werden untersuchen, welche Bedürfnisse der Gedankenprozess einführen muss , wenn wir unsere Funktion veröffentlichen werden . Also bleib dran. 34. Azure-Funktionen veröffentlichen: Okay Leute, also lasst uns mit unserem Einsatz beginnen. Also klicken wir mit der rechten Maustaste oder auf eine Funktion nach oben und gehen zu Veröffentlichen. Und dann kriegen wir diesen Zauberer. Also wollten wir auf eine 0 veröffentlichen, wir wählen das aus und dann müssen wir ein Ziel angeben. Ich habe vielleicht zuvor in diesem Kurs versehentlich erwähnt , dass Sie, wenn Sie Windows verwenden, möglicherweise C-Sharp verwenden möchten und dann andere Sprachen für andere Plattformen verwenden können. Die Realität ist jedoch, dass .net tatsächlich plattformübergreifend ist. C-Sharp wird genauso gut unter Windows funktionieren wie unmarkiert und Linux, das ist die Realität. So kann Ihre Funktion auf der Basisebene auf der Windows-Version dieser Funktion nach oben oder auf der Linux-Version dieser Funktion bereitgestellt werden dieser Funktion nach oben oder auf . Genauso können Python, Java und TypeScript und JavaScript Java und TypeScript und JavaScript für jede dieser Sprachen ebenfalls unterstützt werden. Sie haben auch die Möglichkeit , sie als Container mit Azure Container Registry zu veröffentlichen , mit denen Sie Ihr Docker-Image hosten können. Ich fahre jedoch mit Windows fort. Nach Auswahl des Windows-Wochenendes hat keine Ansicht oder Suche nach Photoshop-Apps bereits eine Funktion, die ich von Anfang an erstellt habe, aber ich werde sie nicht verwenden. Ich wollte ein brandneues kreieren. Also klicke ich auf Neue Funktion erstellen. Und dann fragt es mich nach dem Namen. Jemand sieht gerade eine Einkaufswagen-Bindestrich-API , den Abonnementnamen. Natürlich werden Sie möglicherweise aufgefordert , sich mit Ihrem 0 Doppelpunkt anzumelden, damit Sie damit fortfahren können. Ich belasse es in einer der vorhandenen Ressourcengruppen. Da sind wir los. Funktion von r g. Wenn Sie keine Ressourcengruppe haben, können Sie einfach auf Neu klicken und dann einen neuen Namen erstellen. Dann haben wir unsere Plantypen. Denken Sie also daran, dass wir den Verbrauchsplan, den Premium-Plan und den App-Service-Plan haben. Also nur um zusammenzufassen, was die Plantypen sind und welche verschiedenen Vor- und Nachteile von jedem sind. Der Verbrauchsplan ist der Server, die Milz ist der günstigste Plan. Das ist ein Vorteil und ein Nachteil ist, dass es tatsächlich Einschränkungen bei der Ausführungszeit hat . Nach etwa fünf Minuten oder so wird die ganze App tatsächlich Kuppel wickeln. Es wird also Ressourcen freigeben. Und wenn Sie dann eine weitere Anfrage stellen, wird es einige Zeit dauern, sich wieder zu spulen. Um auf schnelle Gewinne zu testen, wäre das natürlich ein guter Ansatz. Für ein reales Szenario in einer Produktionseinstellung, in einer Produktionseinstellung Sie eine maximale Effizienz und maximale Betriebszeit benötigen, möchten Sie wahrscheinlich Premium verwenden, wo es nicht auf Ressourcen reduziert wird. Sie verfügen jederzeit über dedizierte Ressourcen und können auf VNets und andere Ressourcen im Netzwerk zugreifen. Das ist eine Netzwerkebene. Natürlich kostet das ein bisschen mehr. Ihre andere Option wäre fusioniert und App-Service-Plan. Vielleicht haben Sie also einen App-Dienst unsere Website bereits ausführt, oder eine andere API. Sie könnten es tatsächlich einfach in diesem Plan bereitstellen. Außerdem wollte ich mit diesem Konsumplan gehen. Nachdem Sie dies ausgewählt haben, wählen Sie natürlich Ihren Standort aus. Und für mich wird das Ost-US-Tool sein. Und dann wählst du deine Geschichten oder Kegel aus. Ich habe nur einen, damit das bleiben kann. Und dann klicken wir auf Erstellen. Und nachdem das abgeschlossen ist, führen Sie zurück zu diesem Dialogfeld, in dem wir auswählen können, aus der Paketdatei auszuführen. Das ist also angekreuzt und es wird so ziemlich empfohlen so ziemlich empfohlen , dass es tatsächlich eher wie eine Zip-Datei mit allen erforderlichen Dateien, den DLLs und Ressourcendateien bereitstellt eine Zip-Datei mit allen erforderlichen Dateien, den , die wir benötigen. Und es wird wie ein Bild der App gemountet ein Bild der App anstatt dass die tatsächlichen Dateien da sind. Mit dem alten Trend, die Feinheiten davon zu verstehen, werde ich es einfach angekreuzt lassen wird angegeben, dass es empfohlen wird, also werde ich ihrer Empfehlung folgen. Dann können wir auf „Weiter“ klicken. Und dann wollen sie, dass wir uns entscheiden. Möchten Sie wie eine normale Website veröffentlichen? Bevor es CICD gab, haben wir so früher veröffentlicht. Es würde eine veröffentlichte Datei generieren. Stellen Sie alle Dateien an einer bestimmten Stelle im Netzwerk oder Ihrem Computer bereit, und er kann sie dann kopieren und an das Ziel einfügen. Oder willst du CICD mit GitHub verwenden? Also habe ich diesen GitHub bereits hinzugefügt. Wenn du willst, kannst du das immer machen. Sie können das Quellcodesteuerelement mit dieser Option hinzufügen , die sich in der unteren rechten Ecke von Visual Studio befand. Nachdem du das winzig auf GitHub hochgeladen hast, kannst du wahrscheinlich wieder hierher kommen. In Ordnung, jemand , der CICD mit GitHub-Aktionen benutzt und dann fertig wird. Das bedeutet also, dass jedes Mal, wenn ich eine Änderung einchecke, die Bereitstellung auslöst. Nirgends führen Sie zu unserem letzten Bildschirm, wo es uns eine Zusammenfassung von allem gibt , was genommen hat, bitte. Es wird tatsächlich diese neue Datei hinzufügen , die YAML-Datei genannt wird. Eine YAML-Datei, nämlich Kelly, enthält alle Bereitstellungsanweisungen , die GitHub verwenden wird , um festzustellen, was passieren muss. Wir erhalten auch eine Vorschau von der URL, die für unsere Nullen generiert wird. Alles was wir brauchen, können wir über diese URL live darauf zugreifen. Dort wird unsere EPA zugänglich sein. Und hier unten sehen wir einige der Abhängigkeiten, die Application Insights konfiguriert werden müssen. Lass uns weitermachen und das machen. Denken Sie daran, dass wir das für die Protokollierung haben möchten . Sie können einfach über diesen Assistenten auf Weiter klicken und ihn beenden lassen. Sobald Sie das getan haben, stimmte es sicherlich zu , dass Zähne konfiguriert sind. Sie zeigen Ihnen auch , dass sie die Azure Storage-Sitzung ersetzen werden die Azure Storage-Sitzung denn lokal verwenden wir den Emulator, aber sobald wir bereitstellen, werden wir wissen, dass den echten Speicher verwenden sollte, zitiere ich. Alles klar, also wenn all das erledigt war, und wenn Sie den Verstärker aus irgendeinem Grund modifizieren wollten , konnte er nicht zu Weitere Aktionen gehen, bearbeiten. Und es zeigt dir, was benötigt wird. Wie gesagt, wie gesagt, dies wird tatsächlich ausgelöst, wenn wir einchecken. Wenn ich das Git Changes Fenster öffne, werden Sie sehen, dass alle diese Änderungen hinzugefügt werden. Und dann werde ich eine Bereitstellungsaktivität sehen, Spalte Deployment. Dann bin ich einfach gekommen, um überhaupt zu kommen und die Senke speichert alle Änderungen und erlaube es , in das Repository zu schieben. Wir können zum Repository in GitHub springen und wir können einfach auf den kleinen Punkt klicken , der neben dem Huhn erscheint, oder um Zahlen zu verpflichten. Wenn ich diese Eintragsdetails mache, springen wir zu diesem CID siehe CICD-Bildschirm. Also lasst uns ein paar geben, um fertig zu werden. Nach ein paar Minuten sollte es erledigt sein. Lasst uns zu unserem Dashboard springen. Schauen wir uns unsere Ressourcen an. Also gehe ich zu allen Ressourcen und sollte meine neue Funktion sehen. Da sind wir los. Bevor wir nun weiter mit der Funktion fortfahren, denken Sie daran, dass wir eine Cosmos DB benötigen oder welche Art von Datenbank Sie verwendet hätten. Sie benötigen das, um diese Verbindung zum Testen bereit zu haben. Ich werde zu unserem Dashboard wechseln und bereits die Cosmos DB erstellt, aber ich werde Sie trotzdem durch den Prozess führen. Sie können also zu All Services gehen und dann einfach nach Cosmos DB suchen. Sobald du die Cosmos DB hast, würdest du erstellen. Dann verwenden wir das Core-SQL. Nein, auf diesem Bildschirm wählen Sie die Ressourcengruppen aus. Daher empfehle ich Ihnen, dieselbe Ressourcengruppe wie Ihre Funktion zu wählen , natürlich geben Sie nicht entgegengesetzten NameNode ein. Die Benennung ist sehr streng, sodass Sie keine Großbuchstaben oder irgendetwas verwenden können. Also hätte ich den Einkaufswagen-Artikel angerufen. Natürlich ist das wirklich nur ein Kontoname, also müssen Sie es nicht unbedingt so nennen, aber Sie geben ihm diesen Namen, wenn er Ihnen sagt, dass er nicht verfügbar ist, versuchen Sie einfach, es ein bisschen mehr zu machen personalisiert. Und dann wählst du einen Ort aus, der für dich am besten geeignet ist. Ich empfehle noch einmal, einen Ort zu wählen , der so nahe wie möglich an dem Ort liegt , an dem die Funktion bereitgestellt wurde. Sobald Sie dies getan haben, können Sie wählen, ob Sie einen Durchsatz oder serverlos bereitstellen möchten. Und wenn Sie Serverless wählen, haben Sie offensichtlich nicht die folgenden Optionen. Wenn Sie bereitgestellte Durchsätze wählen, können Sie auswählen , ob Sie diesen Rabatt für das kostenlose Kontingent anwenden. Wissen Sie, was ich in der Vergangenheit erlebt habe, ist, dass ich mit dem kostenlosen Kontingent-Rabatt auf dem zweiten dritten Tablett nicht fortfahren konnte . Also zeige ich nur so alt. Wenn Sie versuchen, dass es angewendet wird und Sie am Ende eine Feldbereitstellung haben, müssen Sie diesen Ressourcenkohle löschen, versuchen Sie es erneut. Und ich empfehle Ihnen, sich nicht zu bewerben. Natürlich, wenn es dein erstes Mal ist, kannst du es dabei belassen. Wenn Sie sich jedoch für „Nicht anwenden“ entscheiden, wird es Sie kosten oder Sie können einfach serverlos wählen. Sie können auch die Richtlinie mit Schnallen ändern, um Kosten zu sparen. Da es sich also nicht um ein Produktionssystem handelt, müssen Sie nicht unbedingt georedundant werden. Sie können lokale redundante Backup-Stores betreiben, sodass es weniger Geld kostet. Aber wenn die Produktion und ich empfehle, dass Sie das geo-redundant lassen, sind dies die echten bis echten Einstellungen, die Sie sicherstellen müssen, dass sie vorhanden sind. Und was ich tun werde, ist zu meinem bereits bereitgestellten Cosmos DB-Konto zu springen . Sobald Sie hier sind, möchten Sie zum Data Explorer gehen? Nein, dieser Data Explorer sieht genauso aus wie das, was wir mit dem Emulator erlebt hätten . So erstellen Sie Ihre neue Datenbank entsprechend, wie Sie einen Code geschrieben hätten natürlich entsprechend, wie Sie einen Code geschrieben hätten. Und so ziemlich was auch immer Sie beim Militär getan haben, wiederholen Sie einfach diese Schritte, um Ihre Datenbank und den Container sowie den Partitionsschlüssel in diesem zu erstellen den Container sowie . In Ordnung, also möchten wir bei all diesem Setup sicherstellen, dass wir die richtige Verbindungszeichenfolge erhalten . Hier ist also eine primäre Verbindungszeichenfolge. Wir können das kopieren und dann wieder zu unseren Emotionen zurückkehren. Also gehe ich einfach zum Dashboard springe zur Funktion nach oben. Dann müssen wir innerhalb der Konfiguration diesen primären Verbindungsschlüssel hinzufügen. Denken Sie daran, dass in unserem Code Lob eingerichtet ist, dass wir lokal in den störenden Punkt JSON schauen müssten , das wäre die lokale Einstellungspunkt-JSON-Datei gewesen. Das ist es, was man als die gegenteiligen Dinge erkennt. In einer bereitgestellten Einstellung müssen wir jedoch Anwendungseinstellungen einrichten. Sie werden nur sehen, dass neue Anwendungseinstellungen Ihnen den entsprechenden Namen geben relativ zu dem, was wir in den Code geschrieben haben, eine Cosmos DB-Verbindung hat. Und dann fügen Sie den primären Klinikschlüssel hier ein. Das hab ich schon gemacht. Hier ist es. Ich habe das Geld hinzugefügt. Nun, die Cosmos DB-Verbindung und der Wert. Sobald Sie das gesamte Setup haben, können Sie mit dem Test fortfahren. Zum Testen können wir auf Funktionen klicken, und das gibt uns eine Liste aller Funktionen, die darin bereitgestellt wurden. Wenn ich auf einen von ihnen klicke, fangen wir mit dem Warenkorb an, den ich versuche. Hier sehen Sie ein Dashboard aller Ausführungen. Sie haben bereits gesehen, wie dieses Dashboard aussieht. Wenn Sie zum Quartal gehen und testen, beachten Sie, dass Sie hier keinen Code für die Funktion schreiben können , da sie tatsächlich von Visual Studio aus bereitgestellt wurde. Also müssen alle Änderungen in Visual Studio erfolgen. Es wird wirklich nur montiert und es hat das absolute Minimum was die Konfigurationen betrifft. Hier zeigt es Ihnen also, dass das Skript israelisch von dieser DLL geladen wird, das die kompilierte Version des gesamten Quellcodes ist, oder? Das würden wir dort sehen. Wenn wir jedoch zurückgehen und die Funktions-URL abrufen würden , könnten wir diese URL abrufen, die wir zum Testen einfach in den Browser einfügen können. Wenn Sie überwachen möchten, wie wir zuvor gesehen haben, können Sie einfach zur Überwachung gehen und zu den Protokollen gehen. Und wenn das verbunden ist und offen läuft, können Sie mit dem Test fortfahren. Also werde ich einfach in einem neuen Browser-Tab öffnen , tut mir leid, und füge ein. Hier bekomme ich diese leere Array-Klammer. Aber wenn ich dann in die Abmeldung schaue, sehe, dass es die Funktion genannt hat und es nichts zu teilen gab. In Ordnung, also bedeutet das, Postman oder ein anderes API-Tool zu verwenden , kann ich tatsächlich die gleiche Ursache simulieren , an die ich gewöhnt bin. Hier hätten wir also einen Warenkorbartikel erstellt , anstatt jemanden an den lokalen Host zu posten , um all dies durch unsere neue URL zu unseren Azure-Websites zu ersetzen und die Anfrage zu senden. Und da hab ich es. Es ist eine Antwort von 200 OK. Das heißt also, wenn ich diese Anfrage aktualisiere, um alle MC im Objekt in der Datenbank kennenzulernen. Das ist es wirklich zum Veröffentlichen oder Funktionieren bis zu Microsoft Azure. 35. Blazor UI-App einsetzen und testen: Alles klar Leute. In dieser Lektion werden wir unseren Kunden auf den neuesten Stand bringen . Was ich getan habe, ist, dass ich zu Visual Studio gesprungen bin. Ich habe die Programm-CS-Datei, und ich werde diesen Pfad vom Pfad der lokalen Host-Funktionen zu unserem Pfad für bereitgestellte Funktionen ändern der lokalen Host-Funktionen zu unserem Pfad . Aus dem Dashboard. Ich werde nur diese URL abrufen, da dies unsere neue Basis-URL ist. Und ich habe diese Codezeile ersetzt. Also dupliziere ich einfach den ursprünglichen Kommentar und füge diese neue Adresse mit diesem Stück ein, dann lass es uns testen. Also klicke ich einfach mit der rechten Maustaste auf dieses Projekt und gehe zum Debuggen und beginne mit dem alten Debuggen. Wenn wir zu unserem Datenabruf navigieren, sehen Sie hier, dass ich einen Fehler erhalte. Wenn ich also gehe und inspiziere und in der Konsole schaue, um Kabel zu sehen, sehen Sie, dass es nicht fertig wurde. Das ist alles, was es wirklich sagt. Wenn Sie oben nachschlagen, sehen Sie, dass der Zugriff auf den Abruf an diese Adresse von diesem Ursprung Sie für eine Kursrichtlinie blockiert hat. Also habe ich früher Kursrichtlinien erwähnt, natürlich ist das quer Ursprungsprotokoll zur Ressourcensicherheit. Mit anderen Worten, zwei Dinge müssen sich im selben Netzwerk oder in einer Domäne oder einer Framework-Infrastruktur befinden, damit der Zugriff gewährt werden kann. Was ich tun muss, ist wieder zu den Funktionen nach oben zu springen Kursrichtlinie zu gehen. Da sind wir los. Fügen Sie dann die URL hinzu. Sobald das bei Speichern hinzugefügt wurde , komme ich zurück und versuche es erneut und stelle fest, dass kein Fehler vorliegt. Nein, ich habe Daten, von denen es dir gut geht. In Ordnung, jetzt wo ich überprüft habe , dass das funktioniert, springen wir zurück zur program.cs. Und was ich tun wollte, ist dies zu konfigurieren, dass wir, wenn wir in der Produktion sind, den Produktionslink für Interviews verwenden. Der Deputy. In Ordnung. Damit ich es einfach einmal einrichten kann. Ich ging zu sehen, gebe mir eine Adresse von var B, erstellt eine Variable namens Basisadresse und setze es auf diesen neuen URI. Oder lassen Sie mich es als diese Zeichenfolge setzen, die unser lokaler ist. Und dann sagte ich, wenn Builder Dot Host-Umgebung, ist es, nun, das ist die Entwicklungsadresse. Ich werde sagen, dass es Produktion ist. Dies ist eine nette, einfache Möglichkeit zu überprüfen, ob Sie in Produktion sind , wenn Sie einen Blazer WebAssembly verwenden. Dann werde ich nur sehen, Dann werde ich nur sehen die Basisadresse dieser Zeichenfolge entspricht, bei der es sich um unsere veröffentlichte Adresse handelt. Dann kann ich eine Zeile haben, in der ich verschwommenes Dienstproblem hinter mir sehe. Die Adresse ist ein neuer URI außerhalb des Basisadresswerts. Wenn das erledigt ist, wird es dynamisch sein. Es mag elegantere Möglichkeiten geben, dies zu tun , aber das alles wird funktionieren. Lassen Sie uns unser Up veröffentlichen. Ich klicke einfach mit der rechten Maustaste. Gehe runter, um zu veröffentlichen, veröffentliche. Da sind wir los. Dann erstelle ich ein neues Profil. Das Profil, das da ist, ist also schon für die volle Bewegung vorhanden, aber dieses Mal erstelle ich ein neues Profil. Ich wähle eine 0 aus und veröffentliche sie in einem anderen App-Dienst. Und es wird gefragt, welche USV-Service-Instanzen hier sind. Lasst uns schon ein paar haben. Ich werde keines von denen benutzen, die wahrscheinlich können. Das ist in Ordnung. Ich mache einfach ein neues. Also erstelle ich ein neues. Dies wäre der App-Service-Plan. Der App-Service-Plan ist so ziemlich die Bs. Dann stellen Sie diese BCE, diesen App Service selbst, bereit. Ich erstelle einen neuen Hosting-Plan. Ich nenne es eine Einkaufswagenliste und lege es in dieselbe Ressourcengruppe wie unsere Funktion ein. Die Wichtigkeit, der gleichen Funktion und derselben Ressourcengruppe Dinge zuzuweisen, besteht darin, dass Sie die Ressourcengruppe einfach löschen können, wenn Sie nicht mehr das Up und die Ressourcen dafür benötigen und alles drin. Und das ist eine nette, einfache Art zu bereinigen. Ich lege die einfach auch da rein. Und ich setze das auf einen kostenlosen Plan. Indem Sie auf Neu klicken. Ich wähle meinen Standort aus und gehe dann zum kostenlosen Tarif. Aber natürlich möchten Sie, basierend auf Ihrem Kontext, nicht den Plan auswählen , der Ihren Bedürfnissen am besten entspricht. Ich gehe mit kostenlos für diese Demo. Wir klicken auf „Erstellen“. Wenn das erledigt ist, kann ich einfach weitermachen und auf Weiter klicken. Und ich werde dies mit dem CMC ICD-Setup veröffentlichen , wenn die Funktion nach oben steht. Beenden Sie einfach. Okay, und dann werden diese Sommerseiten mich wissen lassen, welche URL für meine App abhängen wird. An diesem Punkt kann ich einfach Änderungen abrufen und Setup-Bereitstellung für Blazer, Comments All und Sync sagen Setup-Bereitstellung für Blazer, . Und wenn Sie noch einmal möchten, springen Sie zu GitHub und schauen Sie sich diese Bereitstellung an. Es ist fertig. Lasst uns also zu den veröffentlichten Seiten springen. Denken Sie daran, dass wir diese URL einfach aus dem veröffentlichten Profil abrufen oder zum Board zum Dashboard gehen und sie von der neu bereitgestellten Seite abrufen können dem veröffentlichten Profil abrufen oder zum Board zum Dashboard gehen Board zum Dashboard . Ich scrolle einfach, um Daten abzurufen, nur um sicherzustellen, dass sie kommunizieren können. Es kann nicht. Kannst du raten und mir sagen warum? Nun, wenn Sie vermutet haben, dass die Kursrichtlinien nicht eingerichtet sind, dann haben Sie richtig erraten, oder? Hier können wir es sehen. Es ist immer noch kompatibler Kurs. Warum beschwert es sich über beide Kerne? Weil das ein brandneuer Domainname ist der von dem getrennt ist, den wir ursprünglich verwendet hatten, oder? Ich muss zurück zur Funktion nach oben gehen, zur Kursrichtlinienkonfiguration und dieser neuen URL springen . Lassen Sie mich einfach sicherstellen, dass ich das Format verwende. Sparen und genießen Sie die Früchte unserer Arbeit, die unsere Kunden veröffentlicht, die mit unserer Funktion kommunizieren. Es gibt andere Dinge , die wir mit diesen anderen Konfigurationen tun können , die wir auf dem Weg vornehmen können, um dies nahtloser zu erfüllen. Ich werde sie später besprechen, aber im Moment haben wir sowohl die API als auch unseren Kunden erfolgreich veröffentlicht . 36. Setup: Alles klar, jetzt besprechen wir uns über Sicherheit. Mal sehen, dass wir nach oben schweben. Ja. Wir möchten die Funktion sichern und wir möchten nicht jedem n erlauben, auf zuzugreifen oder einfach nur an jedem Ort zu Daten zuzugreifen oder einfach nur an jedem Ort zu schulen, wo er möchte. Wie Sie bisher sehen können, sind URLs ziemlich offen die Funktion. Jeder , der die URL erhält , kann das Muster herausfinden oder wenn er es mindestens einmal gesehen hat, muss er nur setzen slash API Und dann dieser Endpunkt, um darauf zugreifen zu können. Nein. Es gibt verschiedene Möglichkeiten, eine API auf sehr grundlegender Ebene zu sichern, Sie können wie einen Off-Schlüssel anlegen oder beantragen, dass ein Off-Key in der Kopfzeile dargestellt wird. Der aktuelle Industriestandard verwendet JWT- oder JSON-Web-Tokens. Aber die Abwärtsquote und die Trainer, die Sie tatsächlich nutzen müssten und Ihre Funktion konfigurieren müssten. Suchen Sie nach diesen Token, sind diese Schlüssel in jeder einzelnen Anfrage. Und du müsstest daran denken, das für jede einzelne Funktion zu tun . Dies kann zu Overhead führen, insbesondere wenn Sie mehrere Funktionen und mehrere Operationen haben , die Sie unterstützen. Eine andere Möglichkeit wäre, die Schlüssel zu verwenden, die wir uns angesehen hätten, die UPC-Schlüssel, in denen wir sie von der Standardeinstellung oder von anonymer Funktionsebene im Vergleich zur Admin-Master-Ebene setzen können von der Standardeinstellung oder von anonymer . Der Nachteil davon ist , dass, sobald Sie den Schlüssel festgelegt haben, dieser Schlüssel in der URL vorhanden sein muss und sich dieser Schlüssel nicht ändert, wenn Sie den Befehl nicht ändern. Entweder müssen Sie das GnG jedes Mal beibehalten, oder Sie müssen diesen Schlüssel freigeben . Und der Schlüssel wäre in der URL vorhanden , die von unserer anfragenden Kundeneinrichtung stammt. Jedenfalls könnte jemand diese Informationen immer noch abrufen und auf Ihre API zugreifen können. Das würde sinnvoller sein, wenn dies wie auf der Netzwerkebene von Maschine zu Maschine wäre. Wenn Sie also eine Funktion erstellen, haben Sie wie einen anderen Server eingerichtet, der die Funktion aufruft. Das bedeutet also, dass Sie keinen URL-Datenverkehr sehen, dessen GTP-Datenverkehr im Browser übergeht oder Dr. MB überwacht, schnüffeln Sie sehr leicht alt. Dann hatte er die Schlüssel wird ein sehr schneller Sieg sein. Da wir jedoch die Kundenseite nach oben haben, denke ich, dass es besser ist, eine Sicherheit auf clientseitiger Ebene aufzuerlegen oder es so aussehen zu lassen, als wäre es auf clientseitiger Ebene. Wenn also ein Benutzer versucht, in die App zu kommen, muss er sich hier authentifizieren um zur Funktion zu gelangen. Eine einfache Möglichkeit, damit zu beginnen, besteht darin, zur Authentifizierungsoption in unserem Dashboard zu springen Authentifizierungsoption in , um unsere Funktion zu verbessern. Dann fügen wir einen Identitätsanbieter hinzu. Jetzt wird das wie eine Mini-Version von Azure AD sein. Wenn Sie Azure AD verwendet haben, wissen Sie, dass Sie verschiedene Anbieter verwenden können, die OAuth2 Standard unterstützen. Wenn Sie nicht so vertraut sind, können Sie sich mein Microsoft Azure für Dotnet-Entwickler ansehen, bei denen wir das mit azure AD einrichten, sei es für das Geschäft oder für Wortvorstellungen Kunden. Dies ist jedoch eine sehr verkleinerte Version zwei , bei der Sie nicht einmal ein vollständiges Verständnis von Azure AD benötigen , um das zu erreichen, was wir tun werden. Erstens wählen wir einen Identitätsanbieter, weiß, dass jeder von diesen möglicherweise eine gewisse Menge an Setup erfordert. Natürlich werden Sie für Twitter, Google und Facebook zwei globale dort haben und Ihre App und alle möglichen Dinge registrieren. Jemand, der den Weg dieses Widerstands wählt. Ich benutze einfach Microsoft. Dann wird es mich einfach fragen, okay, was will ich für den Vertrieb haben? Ja, Lagerung oder Kegel. Die Unterstützung, die ein Gegner eingibt, möchten Sie hier wahrscheinlich ein wenig Aufmerksamkeit schenken , um sicherzustellen, dass Sie diejenige auswählen, die für Ihre Operation am besten geeignet ist . Ich kann nur den aktuellen Mandanten auswählen, was bedeutet, dass der Mandant das Konto ist, das die App für jeden Benutzer bereitgestellt hat, der Zugriff auf dieses Dokument in diesem Mandanten soweit einfach ist wie es um Ihre AD geht, dann sind es nur diejenigen, die ich auch jedes Azure AD-Verzeichnis sagen kann. Wenn es sich also um mehrere Mieter handelt, kann ich das wählen. Ich kann jedes Active Directory und jedes persönliche Microsoft-Konto sehen, und ich kann ihm nur persönliche Microsoft-Konten sehen. Ich gehe mit dem hier. Obwohl dieser wahrscheinlich wieder für die Azure AD funktionieren würde , diese Benutzerverwaltung. Deshalb ist derjenige, den Sie wählen, sehr wichtig. Wenn Sie mehr Details dazu wünschen, können Sie dies im anderen Kurs erfahren. Wir machen es mit jedem Azure AD und persönlichen Microsoft-Konten. Das sollte es mir ermöglichen, mich auch mit meinem persönlichen Konto anzumelden meinem persönlichen , wenn ich eine Service-Authentifizierung für Einstellungen habe eine Service-Authentifizierung für Einstellungen Wie beschränken wir den Zugriff? Wenn ich zu sehen war, können Sie einfach lesen, dass die Autorenauthentifizierung erforderlich ist, um sicherzustellen, dass sich jeder authentifizieren muss. Wenn Sie nicht authentifizierte Anfragen zulassen, benötigen Sie Ihren eigenen Code. Das ist kein Problem. Ich benötige nur eine Authentifizierung. Sobald Sie sich hier aufheizen, rufen Sie einfach die API oder die Funktion auf. Ich benötige eine Authentifizierung. Zur Authentifizierung bei authentifizierten Anfragen. Wir können die auswählen, basierend darauf, wie Sie Ihre Benutzererfahrung wünschen. Und das wird an Microsoft weitergeleitet und wir werden die Tolkien speichern. Also klicke ich einfach auf „Hinzufügen“. Mit all dem erledigt und hinzugefügt oder wahrgenommen. Wir kriegen den Bildschirm und null. Wir sollten in der Lage sein, ein gewisses Maß an Authentifizierung zu genießen. Wenn ich also versuche, direkt zur URL für die Funktion zu gehen , werde ich mich einfach umleiten, um mich zu autorisieren oder zu authentifizieren. Wenn ich noch nicht angemeldet wäre, würde ich gebeten, meine Anmeldeinformationen einzugeben , und dann würde ich hier zugreifen. Es sieht, dass ich um Erlaubnis für diese API fordere. Und das würde ich akzeptieren wollen. Nachdem ich das akzeptiert habe, werde ich damit einverstanden sein. Und dann kann ich ohne Fenster zur Funktion gehen und sagen, dass diese Aktivität darin besteht, dass sie nicht mehr in unserem Blazer arbeiten wird. Das ist aus einer Reihe von Gründen etwas Neues. Sie werden sehen, dass es ein Korps gibt, und was passiert, ist, dass es nicht zur Anmelde-URL umgeleitet werden kann , da ich von der API-URL von der Website-URL aus umgeleitet wurde . Es gibt also viel mehr Konfiguration , die dort hineinspringen muss. Und das wird in dieser speziellen Lektion nicht passieren. Ich wollte dir wirklich nur zeigen, wie du die Funktionen konfigurieren und sogar sichern würdest . Aber um den Blazer für eine 0 AD-Konfiguration vorzubereiten, liegt außerhalb des Geltungsbereichs des Azure Functions-Inhalts dieses Kurses. Aber ich zeige Ihnen nur einige der Auswirkungen auf Dinge , auf die Sie achten müssen. Sie können also immer zu Ihrer API zurückkehren und verschiedene Aspekte dieser Authentifizierung , die Sie hinzugefügt haben, ändern . Sie haben tatsächlich als AD in einer sehr Express-Suite hinzugefügt , oder? Anstatt also manuell zu Azure AD und city02 zu gehen, einfach die Authentifizierung hinzufügen hätten Sie ihm tatsächlich mitgeteilt, dass Azure AD das Up sichern soll, indem Sie . Und Sie können zurückgehen, Sie können die Authentifizierung bearbeiten, Sie können sie einfach deaktivieren. Wenn Sie es nicht aktivieren oder aktivieren möchten, können Sie die Regeln hier basierend auf Ihren Bedürfnissen ändern. Sie können auch zum Identitätsanbieter und andere Dinge ändern. Obwohl es sich um die verschiedenen Aspekte der Azure AD-Sitzungen handelt , die angewendet wurden. Sehen Sie sich die Endpunkte noch einmal hier an. Sie können Ihren Kunden über Ihren Mandanten informieren, leider eine Client - und Anwendungs-IDs. Sie können zu Ihrer App-ID-URL gelangen. Wenn du darauf aufbauen müsstest, kannst du es. Wie gesagt, Azure AD befindet sich jedoch nicht im Rahmen dieses Kurses, daher werde ich nicht zu viele Details darüber eingehen , was möglich ist. So einfach ist es also, Ihre Funktion bei so ziemlich allen, die Sie bereitstellen, zu sichern . Ein App-Dienst, den Sie bereitstellen, kann genauso einfach gesichert werden. 37. Section Rezension – Azure - veröffentlichen: Ordnung Leute, also haben wir in diesem Abschnitt einige Dinge behandelt. Wir haben uns angeschaut, wie wir unser Azure Up veröffentlichen können , an dem wir in Visual Studio gearbeitet haben. Wir haben uns auch einige der Änderungen angesehen , die sowohl für den veröffentlichten als auch für jeden anderen Kunden erforderlich veröffentlichten als auch für jeden sind, der bedeutet, dass er mit ihm interagieren muss. Wir haben einen veröffentlichten Beweis für uns sowohl für die Funktion als auch für unsere Client-App eingerichtet , die wirklich nur als Demonstrativ da war , aber es ist nicht wirklich die Schwerpunkte, also hat es nicht ausgegeben zu viel Zeit drauf. Aber wir konnten sie mit CICD-Pipelines mit freundlicher Genehmigung von GitHub bereitstellen mit CICD-Pipelines mit freundlicher Genehmigung von und sehen, wie Sie alles einfach und nahtlos mischen. Wir haben uns auch einige Sicherheitsoptionen für unsere Funktionen mit Azure AD angeschaut und alles kann einfach fließen. Am Ende sollten Sie in der Lage sein, Ihre 0-Funktionen hochzubringen, auf Azure und produktionsbereit zu sein. 38. Schlussbemerkung: Leute, herzlichen Glückwunsch, dass es bis zum Ende dieses Kurses geschafft hast, in dem du alles gelernt hast, was du über Funktionen wissen musst. In diesem Kurs haben wir das Einrichten einer 0-Funktion über das Portal behandelt . Wie können wir Funktionen direkt hier im Portal schreiben, die verschiedenen Arten von Triggern, die verwendet werden können. So können wir eine durch Blob ausgelöste Funktion im Vergleich zu einem Timer haben , oder vielleicht die am häufigsten verwendete Funktion, bei der es sich um einen HTTP-Trigger einer Funktion handelt . Sie haben sich auch angeschaut, dass Sie verschiedene Bereitstellungsmodelle haben. Sie haben den serverlosen im Vergleich zum Premium-Plan im Vergleich zum Verbrauchsplan, jeder mit seinem eigenen Vorteil. Wir haben auch unsere eigene Suite von Funktionen durchgegangen und aufgebaut , die wir in eigenen Bereichen bereitgestellt haben und Apps wie Arrest Fully API. Hier konnten wir nicht viel Code schreiben und mussten uns keine Sorgen um Server machen und IIS konfigurieren. Alles, was wir getan haben, war eine Reihe von Funktionen zu schreiben , die mit einer sehr einfachen Cosmos DB-Datenbank interagieren einer sehr einfachen Cosmos DB-Datenbank von jedem Client aus aufgerufen werden kann. Nach der Bereitstellung auf einer 0 haben wir uns angeschaut, wie wir über die Richtlinien des gesamten Wochenendes auf sie zugreifen können Richtlinien des gesamten Wochenendes um sicherzustellen, dass sie vollständig zugänglich sind. Alles was wir brauchen ist das Sternchen, um zu sagen, dass jeder darauf zugreifen kann. Wir haben uns auch angeschaut, wie wir es mit Azure AD sichern können. Ungeachtet des sehr spezifischen Beispiels das wir durchlaufen haben, untersuchen wir auch verschiedene Funktionen wie dauerhafte Funktionen. Wir haben uns die verschiedenen Arten von Bindungen angeschaut , die verwendet werden können. Und wir haben uns all die verschiedenen Tools angeschaut, die zusammenkommen können , um dorthin zu gelangen, wo wir sind. Also haben wir uns Emulatoren angeschaut, uns die Kern-Tools angeschaut, wir haben uns Visual Studio Code vs Visual Studio angeschaut. Was auch immer Ihre Plattform ist, es gibt ein Tool, das Sie mit allem Gesagten und Erledigen versorgt . Danke, dass du mit mir auf dieser Reise mitgekommen bist. Und ich kann es kaum erwarten zu sehen, was du produzierst.