Fondamentaux des fonctions Microsoft Azure | Trevoir Williams | Skillshare
Recherche

Vitesse de lecture


1.0x


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

Fondamentaux des fonctions Microsoft Azure

teacher avatar Trevoir Williams, Jamaican Software Engineer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      1:47

    • 2.

      Introduction aux fonctions d'Azure

      0:40

    • 3.

      Créer une application de fonctions

      9:10

    • 4.

      Déclencheurs et reliures

      5:23

    • 5.

      Outils de développement

      4:40

    • 6.

      Examen de sections - Introduction de la fonction Azure

      1:29

    • 7.

      Fonctions d'Azure dans le portail Web Azure

      0:45

    • 8.

      Créer une fonction déclenchée par une demande HTTP

      10:31

    • 9.

      Créer une fonction déclenchée par une minuterie

      2:57

    • 10.

      Créer une fonction déclenchée par Blob

      3:53

    • 11.

      Examen de sections - Différentes fonctions d'azur

      3:47

    • 12.

      Fonctions d'Azure dans Visual Studio

      0:50

    • 13.

      Créer une application de fonctions

      3:38

    • 14.

      Fonction de test dans Visual Studio

      6:04

    • 15.

      Examen de sections - Fonctions dans Visual Studio

      1:06

    • 16.

      Utilisation d'outils de base de fonction Azure

      6:50

    • 17.

      Utiliser un code Visual Studio

      8:07

    • 18.

      Examen de sections - Fonctions d'Azure dans le code Visual Studio

      1:00

    • 19.

      Liaisons de fonctions d'Azure et fonctions durables (orchestrateur)

      0:41

    • 20.

      Liaisons d'entrée et de sortie

      23:09

    • 21.

      Fonctions durables et motifs d'orchestration

      11:07

    • 22.

      Créez une API REST sans serveur en utilisant des fonctions Azure

      2:15

    • 23.

      Configuration des routes d'API

      7:43

    • 24.

      Configuration de la fonction d'Azure HTTP POST (Créer)

      4:46

    • 25.

      Configurer des fonctions d'Azure GET HTTP

      4:53

    • 26.

      Fonction d'Azure HTTP de mise à jour

      3:11

    • 27.

      Configuration de la fonction d'Azure DELETE HTTP

      1:20

    • 28.

      Testez des fonctions d'Azure avec PostMan

      4:57

    • 29.

      Fonctions de test avec interface utilisateur

      12:01

    • 30.

      Interagir avec CosmosDB

      29:41

    • 31.

      Mises à jour de l'interface utilisateur

      4:09

    • 32.

      Examen de sections - Créer une API REST

      4:19

    • 33.

      Déploiement de fonctions Azure

      0:25

    • 34.

      Publier des fonctions d'Azure

      13:21

    • 35.

      Déployer et tester l'application d'interface utilisateur Blazor

      6:41

    • 36.

      Sécurité de la configuration

      8:40

    • 37.

      Examen de sections - Publier l'application de fonction Azure

      1:02

    • 38.

      Conclusion

      2:01

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

116

apprenants

--

projet

À propos de ce cours

Azure Functions est l'un des moyens les plus rapides et les plus faciles pour mettre votre code en œuvre dans Azure tout en maintenant un modèle rentable et sans serveur.

Dans ce cours, les fonctions Microsoft Azure - Développer des solutions sans serveur, vous apprendrez à créer vos propres applications Azure Functions et à visualiser comment des applications complètes peuvent être construites en utilisant un modèle puissant et simple des fonctions Azure. Nous explorerons les outils nécessaires pour soutenir le développement, à la fois local et dans le portail Azure, et explorerons les différents déclencheurs, liaisons et modèles de déploiement possibles.

En cours de route, vous apprendrez à :

  • Comprendre les fonctions Azure Plans d'hébergement

  • Découvrez le C #, le TypeScript et d'autres options de langues pour les fonctions Azure

  • Créer et gérer des fonctions Azure

    • Utilisation du portail Azure - Web Based

    • Utilisation d'outils de base de fonctions Azure (Plate-forme transversale)

    • Utilisation du code Visual Studio (Plate-forme transversale)

    • Utilisation de Visual Studio (2019/2022)

  • Comprendre les liaisons et les déclencheurs

  • Utilisez Azure CosmosDB avec des fonctions Azure

  • Surveiller les fonctions d'Azure pour détecter les performances et les erreurs potentielles en utilisant des applications

  • Déployer l'application des fonctions Azure

  • Construire une application client pour interagir avec les fonctions Azure

  • Explorer les paramètres de sécurité et de proxy pour les applications de fonctions Azure déployées

À la fin de ce cours, vous devriez avoir une compréhension fondamentale de ce que sont les fonctions Microsoft Azure, de la façon dont elles peuvent être utilisées et de la façon dont elles peuvent interagir avec d'autres services. Ce cours s'inscrit dans la formation requise pour l'examen AZ-204 : Développer des solutions pour l'examen Microsoft Azure, mais il ne s'agit pas d'un guide de formation officiel. Il est parfait pour vous si vous avez besoin d'en savoir assez sur le développement avec des fonctions Azure pour être fonctionnel dans votre espace de travail, sans passer l'examen.

Rencontrez votre enseignant·e

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Enseignant·e
Level: All Levels

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour et bienvenue dans mon cours, Microsoft Azure Functions développant des solutions sans serveur. Je suis votre instructeur pour War Williams et je suis ingénieur logiciel, praticien de cours et de code depuis dix ans. Dans ce cours, nous allons nous concentrer sur les fonctions Azure et leur fonctionnement. Nous avons examiné comment les créer, les tester, les déployer. Nous avons examiné les différents types de déclencheurs de fonctions et tout le week-end MES interagissent avec des services externes, également provisionnés par Azure et autrement, passant par tous ces concepts, nous allons également interagissent avec différents outils de développement, tous destinés à nous aider à être aussi productifs que possible. Des outils tels que Visual Studio, Visual Studio Code as 0 Functions, outils principaux. Nous avons examiné l'émulateur de stockage et l'émulateur Cosmos DB. Sachez que vous êtes probablement un peu floue quant à ce que sont les fonctions Azure. Leur téléphone est l' un des moyens les plus rapides et les plus simples de faire fonctionner votre code dans Azure tout en conservant un modèle économique et sans serveur. En d'autres termes, vous pouvez écrire une application sans avoir à vous soucier de l'infrastructure ou des serveurs ou quoi que ce soit. Et il peut le déployer sur le Cloud et avoir quelque chose de opérationnel en quelques minutes. Il prend également en charge de nombreuses langues. Ainsi, même si nous nous concentrerons sur dotnet et C-Sharp, vous pouvez également utiliser JavaScript, TypeScript, Python, Java et d'autres langages dès la sortie de la boîte. Tout au long du cours, nous allons nous concentrer sur vos fonctions, mais nous interagirons avec d'autres technologies Azure, telles que Azure Storage, Azure AD, Azure Cosmos DB, Application Insights et application services. Permettez-moi de vous dire encore une fois combien je suis enthousiaste à l'idée de vous accueillir dans ce cours et j'ai hâte de commencer . On se voit bientôt. 2. Introduction à les fonctions d'azur: Dans cette section, nous allons démystifier certains des mystères qui entourent les concepts d'Azure Function. Premièrement, je suppose que vous avez déjà un cône d' époque actif et que vous disposez suffisamment de crédits pour suivre les activités liées à ce cours. Certaines choses coûteront de l'argent, mais nous ne sommes pas encore dans la partie des coûts d'argent. Je veux juste que nous soyons à l'aise avec le portail Azure, comment nous interagissons avec les fonctions et certains concepts et mots-clés entourant leurs opérations. Alors restez dans les parages. Nous allons comprendre exactement ce qu'est une fonction 0 et examiner les différentes façons dont elles peuvent être utilisées. 3. Créer une application de fonctionnement: Très bien, alors passons directement à compréhension d'une fonction 0. À ce stade, je fais quelques hypothèses. Premièrement, que vous avez déjà cônes Microsoft Azure actifs et que vous avez configuré votre carte de crédit ou que vous disposez des crédits gratuits disponibles comme certaines des activités pendant cette période . va coûter un peu d'argent. Mais nous n'en sommes pas encore vraiment à la partie gagneuse d'argent ou à la partie dépense d'argent. Nous ne faisons que regarder les concepts fondamentaux. Je suis déjà connecté à mon compte Azure. Vous pouvez accéder au portail Azure en accédant à portal.azure.com et vous connecter avec le compte que vous avez utilisé pour créer votre compte. Ensuite, vous verrez un tableau de bord. Il peut sembler ou non que le mien ait mis peu de temps et d'efforts pour personnaliser celui-ci. Vous voyez ici, j'ai des ressources qui sont déployées à partir d'un autre cours. Et vous verrez que vous aurez la possibilité de personnaliser cela. Vous pouvez toujours accéder à Nouveau tableau de bord, tableau de bord vierge, ou vous pouvez simplement modifier celui-ci et vous pouvez changer taus tous les nôtres et les personnaliser comme vous le souhaitez. Non, nous allons passer aux fonctions ou au moins à la liste des services et créer une fonction d'une fonction haut d'un service d'application israélien. Vous auriez donc vu le mot clé sans serveur annoncé lorsque vous voyez une fonction 0. Il est sans serveur car aucun serveur physique n'est impliqué. Il s'agit d'un service proposé qui nous permet d' héberger des fonctions. Je peux donc simplement accéder à Tous les services ici. Ensuite, je peux filtrer et dire fonction. Et puis, à partir de là, je verrai que je peux créer une fonction. Lorsque je fais cela, je peux cliquer sur Créer, Créer une fonction vers le haut. Pour continuer, je vais passer par un sorcier. Premièrement, quels sont vos indices ? Donc, lorsque vous avez des abonnements différents, vous êtes probablement en cours d'essai. Vous êtes probablement sur des tests de slash de développement pay-as-you-go comme moi. Vous êtes probablement sur un site spécial pour votre entreprise ou pour votre organisation, quel que soit le choix que vous allez utiliser. Je n'en ai qu'un. Vous souhaitez créer un nouveau groupe de ressources. Vous pouvez donc aller de l'avant et cliquer sur Créer un nouveau. Et je verrai la fonction, RG, la fonction dash, le tableau de bord RG. Cliquez sur. D'accord. Que voulons-nous que cette fonction soit nommée ? Je vais me nommer avec le cours qui est Azure, Functions, Dash Fundamentals, savoir quand vous faites cela, comme vous pouvez le voir, ce sera en fait une adresse publique. Donc, ce que vous pouvez faire pour le rendre plus personnalisé au cas où ce n'est pas disponible. Vous pouvez également mettre un tiret et vos initiales ou votre nom ou une partie de votre nom simplement pour le rendre un peu plus unique. Cela se fera sur une URL publique accessible au public, ce qui nous permettra de naviguer vers les fonctions qui seront déployées, d'accéder aux fonctions déployées dans l'espace central depuis n'importe où. dans le monde. Je suis sûr que nous savons tous comment fonctionnent les URL écrites. Très bien, alors ensuite nous voulons dire publié, voulons-nous du code ou un conteneur Docker pour l'instant, je vais utiliser du code. Quelle pile d'exécution voulons-nous ? Une fonction 0 prend en charge de nombreuses langues différentes. Nous voyons qu'il prend en charge le framework ou la plateforme Dotnet. Nous pouvons utiliser NodeJS, Python, Java, Polar, Show, custom, et d'autres langages sont ajoutés. Très irrégularité pour ce cours , nous allons nous concentrer sur le dotnet. Nous choisirons donc la version. Dotnet 60 est le dernier et le plus grand. Nous allons donc procéder à cela. Au moment où nous étions en train de suivre ce cours, ils ont peut-être une version ultérieure. Vous pouvez également vous sentir libre de l'utiliser. Si vous n'êtes pas jusqu'à dotnet six, vous pouvez également choisir dotnet Core 3.1 pourrait être nécessaire si vous n'avez pas Visual Studio 2022 ou supérieur au moment où vous suivez ce cours, c'est très bien, mais je le serai montrant avec Done à six heures. Et alors votre raison serait le centre de données le plus proche de votre emplacement géographique. Si vous êtes en Australie, vous souhaitez choisir celui qui est le plus proche de vous en Australie. Je suis dans les Caraïbes. Le meilleur pour moi est généralement de l'Est des États-Unis. Et je vais choisir un tabouret qui est un centre de données plus récent dans l'est des États-Unis. Après avoir fait tout cela, nous pouvons simplement cliquer et voir l'autre position assise potentielle afin de pouvoir créer un compte de stockage car nous devons créer un lien vers un compte de stockage pour stockage de blobs et de files d'attente et de tables, toute forme d'interruption avec ceux-ci. Nous pouvons choisir un système d'exploitation. Je vais laisser ça sous Windows. Nous pouvons également choisir un type de plan, pas le type de plan n'affectera directement le calcul des coûts et les ressources sont bloquées pour prendre en charge vos fonctions. Ainsi, en cliquant pour en savoir plus, vous pouvez développer la documentation afin que le plan de consommation évolue automatiquement et que vous ne payez pour les ressources de calcul que lorsque vos fonctions sont en cours d'exécution. L'inconvénient est qu' ils vont effectivement désactiver ou affecter les ressources après une période d'inactivité. Et quand vous en avez besoin à nouveau, il y en a eu, mais cela peut prendre du temps, donc c'est comme si ce n'était pas toujours à bord, alors il sera un peu déchiré pour vous faire économiser de l'argent sur le long terme. courir, cependant, si c'est quelque chose dont vous avez toujours besoin, alors ce n'est peut-être pas nécessairement le meilleur plan pour vous, n'est-ce pas ? Maintenant. Le plan premium est automatiquement adapté à la demande et il n'y a pas de périodes d'inactivité Il est donc toujours évolutif et il est toujours actif quand vous en avez besoin, il est toujours là. Une autre chose à noter est également le temps d'exécution. Le plan de consommation a donc une limite de 20 minutes si je ne me trompe pas. Cela signifie que notre fonction cessera de fonctionner pendant 20 minutes. Alors que le plan premium, il n'aura pas cette limite de temps. Il sera donc plus long que le temps d'exécution maximal nous donne le plan de consommation. Comme je l'ai dit, il faut savoir quels sont vos contextes et ce dont vous avez besoin. Le plan dédié vous donnera en fait un type d'exécution de ce plan App Service, ce qui signifie qu'il disposera de ressources dédiées à votre fonction AP, à votre fonction. Et vous n'aurez pas à deviner et à épeler pour dire : Ok, je dépense trop pour les dépenses. Il évoluera automatiquement et c'est beaucoup plus prédictif si vous savez que vous allez avoir besoin de fonctions et vous allez le faire à long terme. Vous souhaitez probablement utiliser l'usine dédiée , car vous pouvez alors estimer correctement vos coûts à un certain type de charge. Vous pouvez choisir celui dont vous avez besoin en fonction de votre contexte pour ce cours, nous allons aller de l'avant avec le plan de consommation de sel, qui est indiqué comme plan de service. Ensuite, nous passons du côté réseautage. Il n'y a pas grand-chose ou quoi que ce soit à configurer ici, car il est déjà configuré pour être public face à Internet. Nous n'avons donc pas vraiment besoin d' effectuer des ajustements de réseau virtuel ici, nous pouvons passer à la surveillance où nous pouvons activer Application Insights. Et cela nous permet de filmer des journaux et de surveiller les fonctions pendant qu'elles exécutent le moteur d'exécution et les erreurs qu'elles obtiennent toutes. Je vous recommande donc de l'activer. Cela coûte un peu d'argent, mais je pense que cela en vaut la peine à long terme. Et puis les balises, elles sont pour créer une ressource de nommage, en particulier dans un cadre où vous pouvez avoir nombreuses ressources sont assez similaires à la nature servant des objectifs différents. Les balises peuvent donc aider à les isoler et à vous aider à construire et à allouer des ressources à long terme. Mais on peut sauter ça pour null. Ensuite, nous allons dans Review and Create. Une fois que nous avons vérifié que tout est ce que nous voulons, nous pouvons simplement cliquer sur Créer. Lorsque ce processus est terminé, vous pouvez toujours cliquer sur Aller à la ressource. Une fois sur, allez à la ressource. Si vous avez déjà déployé un service d'applications, il aura un verset de tableau de bord très similaire, une sensation similaire. Si ce n'est pas le cas, c'est très bien. C'est le tableau de bord que vous obtenez. Vous verrez donc ici qu' il obtient des graphiques, des mesures sur les notifications d'exécution. Vous pouvez contrôler l'accès pour voir quel utilisateur de votre organisation ou votre Azure AD peut faire quoi que ce soit dans cette ressource particulière Nous pouvons configurer des alertes de sécurité pour toute intrusion ou intrusion potentielle. Nous pouvons organiser des événements. Et bien sûr, la raison pour laquelle nous sommes ici, nous pouvons commencer à créer des fonctions. Quelqu'un pour qui le laisser là. Non, nous avons simplement examiné comment créer une fonction et les différents types de modèles d'hébergement, les différents modèles de tarification qui s'offrent à vous. Et bien sûr, le contexte détermine les décisions que vous prenez. Nous allons passer en revue certains concepts dans les prochaines leçons. 4. Déclenche et lides: Très bien, dans cette leçon, nous allons examiner les déclencheurs et les liaisons, et nous ne faisons pas de codage pour l'instant. Nous sommes encore en train d'explorer dans le tableau de bord pour voir ce que signifie le jargon, ce que signifie le jargon et comment connecter les points entre nos besoins et regarder les fonctions Azure qui nos besoins et regarder les nous le fourniront. Nous avons déjà créé notre fonction et une fois de plus, cela ne va pas au service UPS qui devait héberger toutes les fonctions devant être exécutées. Nous pouvons donc y arriver en accédant à cette URL. Et si je clique dessus, vous verrez mes fonctions sont opérationnelles. Bien sûr, il n'y a pas de phonéticiens à parcourir, donc c'est très bien. Si je descends dans cette section qui dit fonctions et que je clique sur les fonctions, cela me permet de voir toutes les fonctions que j'aurais, le déclencheur et l'état. Donc, si je clique sur Créer, cela fait apparaître ce fond perdu qui me permet de définir l'environnement de développement. Vous voyez ici que nous avons quelques options que nous examinerons plus tard. Ensuite, ils nous demandent de choisir un modèle. C'est plutôt bien et vous pouvez voir que vous avez plusieurs options dans cette section de modèle. Le déclencheur représente l'action qui fait exécuter la fonction, car une fonction va simplement rester là. À ce stade, nous supposons tous nos programmeurs, donc nous savons tous que les fonctions doivent être dans un programme et qu'elles doivent être appelées pour être exécutées. Non, le problème avec les fonctions Azure, c'est qu'elles ressemblent davantage à des fonctions autonomes, mais elles ont des déclencheurs et un déclencheur est ce qui demandera son exécution. Par conséquent, si nous examinons les besoins de la colonne Modèles, vous verrez les différents types déclenchés disponibles sous ces modèles. Vous disposez donc du déclencheur HTTP, est-à-dire une fonction qui sera exécutée chaque fois qu'elle reçoit une requête HTTP et qu'elle répondra. Donc, si vous connaissez les API, c'est tout ce qu'est une API. Vous créez un HTTP appelé peut-être inclure des données, peut-être pas. Mais sur la base de cet appel, l'API répondra en fonction de la façon dont elle a compris l'appel par rapport aux données qu'il a peut-être ou non données. Il s'agit donc d'une fonction déclenchée par HTTP. En tant que fonction, vous avez des déclencheurs de minuterie, ce qui signifie que vous pouvez le mettre sur une minuterie, exécuter toutes les cinq minutes , exécuter une fois par jour, etc. Donc, vous savez, vous avez ce planificateur Windows ou vous avez Ces tâches Cron sous Linux, vous pouvez utiliser des déclencheurs de minuterie dans l'espace Cloud pour effectuer ce type d' exécutions en arrière-plan. Je ne vais pas expliquer ce qu'est chaque type, mais vous pouvez toujours lire les descriptions, n' est-ce pas ? Alors qu'un procès Zuora crée des choses, cela vous éduque pour que vous puissiez prendre la décision judiciaire que vous avez en la décision judiciaire que vous avez tant que déclencheur de file d'attente, vous avez des déclencheurs Service Bus, sujet ou un signal. déclencheurs basés sur celui que vous utilisez pour le Service Bus, vous avez des déclencheurs Cosmos DB, n'est-ce pas ? Et puis, dans le même souffle, vous avez ce que vous appelez des fixations. La liaison consiste essentiellement à vous abonner à une ou plusieurs fonctionnalités non liées aux fonctions assises et lire ou écrire des données. Vous disposez donc de liaisons d'entrée et de sortie. Donc, quand nous disons cela, je vous donne juste ce scénario pour que vous puissiez apprécier ce que je vois. Si vous disposez d'un déclencheur de minuterie censé retirer une image du stockage des objets blob ou retirer un message de la file d'attente et placer quelque chose dans Blob Storage. Supposons donc que vous ayez montré un formulaire plus facile qui a été le plus déclenché par le service. Sachez que ce téléphone a été affiché va avoir une liaison à la file d'attente et qu'il aura une liaison au blob. Cela va vous permettre de vous abonner à ces deux services tiers que je veux définir tiers , je veux dire, ils ne sont pas exactement liés à la fonction. Il s'agit de services Azure autonomes. Donc, la liaison d'entrée serait, je lis dans la file d'attente. La liaison de sortie serait, j'écris dans le stockage Blob. Je ne veux pas avoir à écrire s'il m'a fallu 50 lignes de code en programme irrégulier pour les consommateurs blob et connecter à elle et savoir exactement où je vais. Il faudra probablement trois à cinq lignes cause de cette fonctionnalité de liaison. C'est une fonctionnalité très puissante, vous permet de découper une grande partie du code de la plaque chauffante et d' aller directement au but et mettre en œuvre la logique métier. Il est donc très utile de mettre en œuvre fonctions ou des fonctionnalités plutôt que d'avoir besoin de jugements instantanés, vous savez exactement ce que vous voulez. Vous n'avez pas le temps d' écrire trop de code. C'est ce que ces modèles de déclencheurs apportent à la table. la possibilité de simplement lier la fonction à une ressource externe facilite le déploiement d' une application qui touche de nombreuses parties différentes d'un 0. C'est vraiment tout ce dont je voulais parler ici. Nous ne créons toujours pas de fonction pour l'instant. Nous sommes toujours en train de nous réchauffer au tableau de bord et au jargon. Lorsque nous reviendrons, nous parlerons des outils de développement qui sont à notre disposition, même si nous n'irons pas trop en profondeur. Ce que nous venons de discuter, quelles sont les possibilités. 5. Outils de développement: Très bien, la dernière fois que nous sommes ici, nous examinons les différents types de déclencheurs que peuvent avoir Azure Functions. Non, allons plus loin et examinons réellement l'outillage qui nous entourerait, créant en fait une interaction. Nous avions dit que les fonctions, pas plus haut, ce serait l'option la plus évidente qui consiste à utiliser le portail car les ports, c'est un outil très, très puissant. Il se trouve dans le navigateur. Il faut très peu de ressources sur votre machine réelle. Donc, ce serait probablement la fonctionnalité ou l' option plutôt, peu de personnes pourraient finir choisir lorsque vous accédez à Créer une fonction, la première en développement du portail. Vous pouvez choisir votre modèle, puis cliquer sur Créer une fois que vous lui avez donné un nom, disons tester le portail. La fonction Http fait quelque chose pour que nous sachions exactement ce que c'est le niveau d' autorisation qui a trait aux niveaux d'autorisation que nous allons donner aux personnes afin d' interagir cette fonction. Donc je vais juste dire une fonction, vous interagissez simplement en tant que niveau fonctionnel anonyme contre administrateur. Ce qui arrive, c'est que lorsque vous utilisez la fonction, vous avez besoin d'une clé de notion complète. Lorsque vous utilisez admin, vous avez besoin d'une clé principale et vous pouvez gérer ces clés sous la section Gestion des clés ici. Donc, si je dis simplement anonyme, il n'y a pas besoin de clés. Donc je vais simplement le faire pour cela, nous avons simplement cliqué sur Créer et cela nous donne un tableau de bord plus petit. Nous pouvons regarder le code et exécuter et tester ici même sur le portail. Et comme je l'ai dit, je ne vais pas trop entrer dans le code, n'est-ce pas ? Non, je ne vais pas expliquer ce que c'est. Je vous montre simplement qu'il s'agit d'un éditeur de texte juste ici dans le navigateur pour que vous puissiez l'enregistrer, vous pouvez le tester et l' exécuter ici. Vous pouvez faire tout ce que vous devez faire. Nous pouvons obtenir l'URL de la fonction. Tout cela peut se produire ici même sur le portail. C'est donc l'option a qui permet à votre outil d'écrire une fonction. Aucune option B ne serait Visual Studio et Visual Studio ici. Celui que j'utilise est installation de Visual Studio 2022 Community Edition. Vous devez vous assurer que cette charge de travail de développement Azure est sélectionnée. Ainsi, parmi toutes les autres charges de travail dont vous pourriez avoir besoin, assurez-vous d'avoir inclus le flux de travail de développement Azure. Et puis, une fois que vous aurez cette charge de travail, lorsque vous créez nos projets, vous serez chargé ou vous aurez la possibilité de créer un projet de fonctions 0. Cela serait utile si vous avez un projet de développement complet, vous travaillez en équipe. Vous voulez le contrôle de la source, la gestion et tous ces éléments. Et vous disposez de cette solution avec un certain nombre de fonctions que vous pouvez déployer. Ajustez la fonction. Et si vous utilisez l'irrégularité de Visual Studio, je n'ai pas besoin de vous commercialiser comme étant un très bon outil de développement. Une autre option que vous auriez pu être Visual Studio Code. Et vous pouvez toujours accéder aux extensions et les installer comme outils. Ainsi, comme 0 outils seront livrés avec un tas d' extensions pour toutes sortes de développement Azure, y compris une fonction 0. Si vous ne voulez pas que l' ensemble d'outils soit complet, vous pouvez rechercher spécifiquement Azure Functions, mais pourquoi ne pas simplement installer tous les outils ? Cette option est désormais parfaite pour vous si vous utilisez Linux ou Mac, car le code Visual Studio est open source et multiplateforme. Il ne se limite donc pas au PC Windows comme Visual Studio. Une fois de plus, ce serait une bonne alternative d'avoir le code sur votre machine et le contrôle source, etc. en dehors du portail. Maintenant, la prochaine option, que je n' ai certes jamais essayé d'utiliser, mais elle est là. Nous allons donc discuter qu'il s' agirait de n'importe quel éditeur et des outils de base, non ? Nous pouvons donc utiliser Node.JS et installer ces bibliothèques. Ensuite, ils nous disent comment commencer à dire que nous pouvons le tester ou créer un projet façon dont vous pouvez le publier. Donc, si aucun GS n'est votre préférence, vous pouvez suivre ces instructions et passer par là. Mais comme je l'ai dit, nous ne faisons aucun codage dans cette leçon particulière, je vais en fait supprimer cette fonction parce que je n'en ai pas besoin. Au-delà de savoir. Lorsque nous reviendrons, nous continuerons à discuter d' autres concepts, puis nous fermerons cette section et nous entrerons directement dans le plaisir que nous sommes venus ici. 6. Examen de la section - Introduction à la fonction azure: Très bien, considérons ces notes comme des notes sexuelles. Passons en revue ce que nous avons accompli. Premièrement, nous avons examiné ce qu'il faut pour créer une fonction 0. Et nous avons discuté du fait que la fonction est une seule unité de déploiement. Il s'agit d'un service d'applications qui va héberger un certain nombre de fonctions. Ainsi, une fonction peut être créée et elle peut avoir différents modèles, sont des déclencheurs différents. Le modèle n'est donc que le froid prédéfini, mais vous pouvez toujours déployer n'importe quel type de modèle et lire le code en conséquence. Mais nous avons différents déclencheurs qui déclencheront les fonctions. Nous avons déjà examiné une fonction déclenchée par HTTP. Nous avons un minuteur aura q, nous avons le Service Bus déclenché. Nous en avons un certain nombre que nous pouvons utiliser, durables et MQ. Plus tard, nous examinerons ce que signifient réellement les fonctions durables. Mais le fait est que nous avons toutes ces options à notre disposition. Nous avons également examiné certains des outils de développement dont nous disposons. Nous utiliserons Visual Studio ou j'utiliserai Visual Studio. Mais surtout, sinon, tout ce que je fais peut être accompli sur le portail et utiliser les autres outils si vous avez besoin de les utiliser. Quand nous reviendrons, nous allons nous pencher un peu plus sur l'interaction avec les fonctions utilisant le portail et nous allons nous salir les mains avec du code, tenir à un test ou fonctionnels et vendu pour examiner l'exécution et voir ce qu'il faut pour créer et déployer certaines fonctions Azure. 7. Les fonctions Azure dans le portail Web Azure: Très bien, les gars, bienvenue. Dans cette leçon, nous allons entrer directement dans le fonds et nous allons créer quelques fonctions Azure ici sur le portail Web. Nous allons donc examiner des exemples de projections de films déclenchées par HTTP. Nous examinerions les fonctions déclenchées par la minuterie. Et nous allons en examiner un avec Blob Storage, si vous pouvez utiliser ces mêmes étapes et déployer n'importe quel type de fonction dont vous avez besoin en fonction de la montre dont vous avez besoin, car le déclencheur se concentrera. sur ces trois exemples. Et nous examinerons également comment vous pouvez tester. Eh bien, nous pouvons regarder les journaux que vous pouvez faire avec les fonctions juste pour nous assurer que vous le faites correctement et que vous couvrirez toutes les bases. Alors restez dans les parages. Nous avons beaucoup de plaisir en tête. 8. Créer une fonction déclenchée de la demande HTTP: Très bien, commençons par créer une fonction déclenchée par des requêtes HTTP. Et nous l'avons déjà fait. Nous allons donc simplement rejouer nos pas. Nous sommes dans la fonction vers le haut , puis nous descendons de deux fonctions, puis nous cliquons sur Créer en haut. Et puis cela nous donne la liste. Et dans cette liste, nous voulons le déclencheur HTTP. Si vous cliquez dessus, vous lui donnez un nom de fonction. Je vais juste le nommer HTTP, demander un tiret funk ou une fonction. Laissez-moi juste écrire ça. Et puis ici pour l'autorisation d' Endo a écrémé la dernière fois, mais je vais aller beaucoup plus lentement cette fois et expliquer plus en détail quand nous choisirons le niveau d'autorisation pour la fonction, ce qui va se passer, c'est que n'importe quel appareil, n'importe quelle couleur de cette fonction doit fournir une clé spécifique à cette fonction. Ainsi, en créant une fonction et nous obtenons une clé, et cette clé doit être présente dans toutes les requêtes cette fonction pour qu'elle soit réellement déclenchée. Lorsque nous disons anonyme, c'est ouvert, n'importe qui peut y accéder. Nous n'avons pas besoin de notre clé ni de contraintes de sécurité supplémentaires. Ensuite, lorsque nous utilisons admin, cela signifie que l'administrateur qui était une clé principale qui permettrait à l'administrateur d'exécuter n'importe quelle fonction, n'importe quelle fonction, mais uniquement au niveau de l'administrateur, ne peut pas être exécutée. Je vais laisser cela au niveau de la fonction pour null et je vais appuyer sur Créer. Maintenant que notre fonction a été créée, nous pouvons passer au code et tester le fond perdu. Une fois dans cette lame , nous allons nous montrer un code de fonction de la plaque de chaudière. Beaucoup de choses qui sont définies pour nous. Vous remarquerez que l' extension de fichier ici est Dot CSS. Donc, en fonction du modèle que vous utilisez, est-à-dire utiliser JavaScript ou utiliser C-sharp, etc. Alors cette extension de fichier sera bien sûr différente. Et si vous déposez cela, vous verrez que vous avez également un fichier de lecture MD ou Mark ne ressemble pas à ce que vous auriez sur GitHub ou un DevOps 0 à des fins de documentation. Et vous avez également fonction point JSON. Et ce fichier JSON de fonction n'a essentiellement que des configurations pour différentes liaisons et différentes métadonnées sur la fonction. Vous pouvez donc voir ici qu'il est spécifique que nous utilisons le déclencheur HTTP et qu'il accepte les méthodes de GET et de publication. Donc, si nous voulions mettre et peut-être corriger et supprimer, etc., vous n'avez qu'à étendre toute cette section. Il existe quatre méthodes. Il arrive parfois que vous deviez modifier ce fichier, mais pour l'instant, nous n'avons pas nécessairement besoin de le modifier. Nous allons donc simplement laisser cela tranquille et nous laisser revenir à notre Randolph CS6. Et ce que nous allons faire ici, c'est regarder dans le code. Il s'agit donc d'un code très simple où l'on utilise quelques bibliothèques. Et ici, nous incluons bibliothèque tierce que vous auriez probablement pour obtenir avec NuGet si vous faites une application Dotnet irrégulière. Mais nous utilisons certaines bibliothèques ici. Ensuite, nous avons une méthode qui renvoie un résultat d'action oculaire. Donc, si vous avez déjà travaillé avec des API, vous seriez familier avec notre MVC habituel. Vous connaîtrez bien le résultat de l'action oculaire. Notez que la fonction déclenchée par HTTP est généralement très utile pour faire semblant ou non, mais pour agir comme une API. Et c'est également très utile pour répondre aux webhooks. Donc, tout ce qui est du trafic HTTP dans la fonction déclenchée par HTTP, général, est équipé pour gérer ce type d'opération. Vous pouvez donc créer API complète ou une logique d' application complète l'aide d'une suite de fonctions déclenchées par des requêtes HTTP, chacune répondant à la demande spécifique en conséquence. Ici, à l'intérieur de notre méthode, nous voyons que nous arrivons au paramètre est la requête GTP. Je vais m'appeler chez Rick, et nous mettons également un exemple de notre bûcheron. Nous enregistrons donc les informations en première ligne où ils voient qu' il s'agissait d'un processus. Il s'appelait que nous traitons notre demande. Ensuite, nous obtenons de la demande une chaîne de requête portant le nom. Nous obtenons donc la valeur de la chaîne de requête portant le nom. Et nous le stockons à l'intérieur de cette variable appelée name. Et ensuite, nous voyons le processus du corps demande qui s'il vous plaît. Je cherche ce corps de requête s' il s' agit de JSON ou de le diffuser sur JSON, regardez à l'intérieur et voyez si vous pouvez trouver le nom. Ici, il est dit que vous allez trouver la chaîne de requête portant le nom dans la chaîne de requête dans l'URL elle-même. Ou vous pouvez regarder dans le corps de la demande au cas où il s'agissait d'une demande de publication et rechercher des données portant le nom, veuillez me donner ce corps. C'est tout ce qui ne fait que faire. Cela aurait pu être l'un ou l'autre parce que habitude vous envoyez soit vers le haut, soit je reçois ce qu'il y a ici. Le code vous montre simplement que c'est là que vous obtenez une valeur de chaîne de requête et que c' est là qu'elle obtient quelque chose à partir des requêtes d'un sondeur. C'est tout ce qui se passe vraiment. Ensuite, il va formuler un message de réponse. Et il est bon de dire si cette variable de nom n'est pas nulle ou vide, ou désolée, si elle est plus petite, vide, donnez-leur une erreur C et que vous devez la mettre en pause dans la chaîne de base ou dans le corps de la demande. Et si ce n'est pas un dollar vide , nous allons imprimer le nom Hello. Cette opération a été exécutée avec succès. Ensuite, nous reviendrons, d'accord, ce qui est 200 résultats si vous connaissez les codes de réponse HTTP, d'accord ? La fonction OK renvoie un code de réponse 200 ainsi que ce message. Très bien, c'était une visite du code. Je ne vais pas le modifier. Cela va le tester. Nous allons donc tester et courir. Nous voyons ici tout d'abord va dire OK et tester, faites-vous un post ou un appel de méthode get ? Deuxièmement, quel type de clé, n'est-ce pas, pour que je puisse utiliser le monstre de clé principale parce que dans le portail, nous sommes les administrateurs et une clé principale peut tout faire de toute façon. Eh bien, vous pouvez simplement le tester avec une touche de fonction, car c'est pour cela que nous l'avons déployée. Vous pouvez ajouter un paramètre ici ou modifier le corps ici. Je vais donc voir mon nom à l'intérieur du corps. Il s'agit d'une demande postérieure. Donc, quand je clique sur Exécuter, je vais obtenir la réponse alpha 200 de sortie ALU, bonjour, le nom que j'ai entré. Cela a été déclenché avec succès. C'est donc un bon test. Revenons maintenant à la saisie et modifions les paramètres. Je fais donc une demande GET cette fois et je mets cette requête et j'appelle le nom de la variable. Donc, les paramètres du nom et de la valeur sont toujours mon nom. Et je vais juste dire Dash Get. Et je ne sais pas si vous rencontrez cela, mais en utilisant le portail, je dois appuyer sur un bouton et attendre que le personnage apparaisse. C'est donc l'une des raisons qui n'aiment pas vraiment travailler directement sur le portail comme ça, moins pour ce type d'opération. C'est un peu lent pour moi, mais vous pouvez me faire savoir si vous le ressentez aussi. Mais quand je clique sur Exécuter , nous obtenons les mêmes résultats. Cette fois, il l'obtenait à partir de la chaîne de requête par opposition au corps de la requête comme il l'a fait pour la publication. Maintenant, si je manque le nom de ce paramètre de requête et que je l'exécute, alors nous arrivons à notre erreur. Cette mousse déclenchée par HTTP Sean s'est exécutée avec succès. Mais veuillez transmettre les données comme prévu. C'est à peu près en attente. La fonction déclenchée HTTP fonctionne. Je demande des données. Nous écrivons du code pour analyser les données, manipuler selon ce que nous devons en faire. Et puis peut-être que nous renvoyons, nous écrivons un journal afin que nous puissions réellement rouler le chemin d'exécution. Mais nous ne faisons que leur faire connaître le type de réponse. Je pourrais donc répondre à NC, si le paramètre de requête n' était pas nul, puis renvoyer un nouveau résultat d'objet de requête peut-être mauvais, est-ce pas ? Quelque chose comme ça. C'est à peu près des travaux d'étalage. Non, je peux obtenir l'URL de la fonction en cliquant sur ce bouton en haut. Ensuite, il dira, donnez-moi la valeur par défaut. Eh bien, quel lien voulez-vous ? Il va donc inclure la clé sur cette URL. Est-ce que je veux la clé principale ou est-ce que je veux une touche de fonction ? Je suis donc allé le laisser par défaut. Et si nous regardons cette URL, et que je vais simplement utiliser Notepad Plus Plus. Nous voyons ici que nous avons l'URL de la fonction vers le haut. Et puis il indique l'API slash, puis le nom de la fonction. Et puis le code est égal à, et puis cette chaîne silencée, qui est cette clé, c'est la touche de fonction. Donc, si j'avais besoin de l'exécuter à partir de n'importe quel type d'application que j'écris, je dois l'exécuter à nouveau. Donc, vous envisagez un minimum comme ça. Sans ce code, il n'atteindrait jamais la destination. Il rejetterait simplement la demande. Si nous parcourons les autres pages disponibles à partir de cet écran, nous pouvons passer à l'intégration qui nous permet de modifier certaines choses. Donc, nous candidats déclencheurs, nous pouvons modifier la fonction, nous pouvons modifier les entrées et les sorties sont un mini-organigramme, juste pour dire que c' est là qu'elle commence, c'est le processus et c'est ce qui est attendu. Nous pouvons aller au moniteur, ce qui nous montre que toutes les exécutions et le propriétaire ont réussi, combien d'entre elles ont échoué ? Ensuite, nous pourrons accéder aux touches de fonction, qui nous montreront nos clés. Nous pouvons toujours cliquer pour afficher la valeur car nous utilisons la touche de fonction, c' est-à-dire notre touche de fonction si vous avez besoin de la récupérer, si vous avez besoin de la renouveler , de la réinitialiser, etc. c'est à peu près tout cela pour configurer une fonction déclenchée par HTTP. 9. Créer une fonction de déclenchement de la minuterie: Le prochain type de fonction que nous allons examiner est une fonction déclenchée par minuterie. Donc, cela a été jeté sur les fonctions. Allez-y et cliquez sur Créer, et cette fois, nous voulons que le minuteur soit déclenché. Nous avons donc cliqué sur Timer Trigger et nous pouvons lui donner un nom , une fonction déclenchée par la minuterie assis. Ensuite, nous pourrons définir le calendrier. Le calendrier est basé sur une expression chronique. Donc, si vous connaissez Linux, hum , les expressions chroniques sont juste la façon dont vous représentez l'intervalle sur lequel vous voulez répéter quelque chose . Vous pouvez donc voir ici que c'est sous la forme d'une seconde, puis d'une minute, puis de tout ce que nous sommes, de sorte que chaque astérisque représente essentiellement cette unité de temps. Ici, à peu près. Il y a 0 seconde, mais cinq minutes. Donc, si je change cela par un, ce serait comme toujours minutes plutôt que plus de cinq minutes. Et puis cet astérisque représenterait le plus bas que le d, puis le jour de la semaine ou le mois et le jour de la semaine. C'est donc tout ce que vous envisageriez vraiment de vous habituer si vous n'êtes pas familier avec ce que c'est, mais c'est une construction très puissante à comprendre et à apprécier. Nous allons donc créer cette fonction déclenchée par la minuterie. Une fois cela créé, nous pouvons passer au code et à tester. Et vous voyez ici que c'est un peu de code relativement simple. Nous avons une fonction appelée Ron, et elle a un paramètre appelé my timer, qui contient tout ce dont vous pourriez avoir besoin autour d'un objet qui lui permet de glaner. Je suis des détails sur le minuteur utilisé et il a également la bibliothèque de journalisation. Il se connectera aux informations ou créera un enregistreur d'informations à chaque fois qu'il est exécuté montrant l'horodatage. Si je regarde dans les journaux chaque minute, vous allez le voir peupler, donc je vais le laisser tellement minutes et ensuite vous montrer les conséquences. Très bien, j'ai attendu deux minutes. Et là, vous pouvez voir l'exécution pour la première minute et l'exécution pour la deuxième fois. C'est bon ? C'est à peu près ce que le service de minuterie vous apporte. Je suis sûr que vous pensez à différentes applications que cela pourrait avoir, il peut s'agir d'une application où vous devez effectuer un nettoyage tous les matins ou tous les soirs, ou vous avez besoin d'un traitement par lots pour entrer tous les jours à un certain moment. Vous avez un certain nombre d'applications pour les fonctions de minuterie et de minuterie déclenchées. Dans cette situation, je n'ai pas besoin qu'il fonctionne en arrière-plan. Si vous ne voulez pas qu'il soit exécuté en arrière-plan, vous pouvez toujours le désactiver. Et nous avons déjà examiné comment supprimer une fonction. Je viens donc de désactiver celle-ci à l'avenir quand nous l'utiliserons à nouveau, mais c'est vraiment tout pour un tout. Vous créez des fonctions déclenchées par minuterie et leur fonctionnement. 10. Créer une fonction de déclenchement de Blob: Très bien, maintenant, regardons ce qu'il faut pour créer une fonction déclenchée par un blob. Créons donc dans la lame, nous allons chercher des blob. Dès qu'il se charge. On y va. Donc, en tant que déclencheur Blob Storage, c'est vrai. Vous voyez donc qu' ils sont nombreux et je vous encourage à les essayer. Vous les auriez peut-être utiles en dehors de ces démonstrations que je fais. Je vous encourage donc à aller de l'avant et essayer de voir à quoi ressemble le trimestre, voir à quoi ressemble le code de liaison. Mais ici, lorsque nous faisons le déclencheur Blob Storage, je peux changer le nom pour que ce soit la fonction déclenchée par blob. Et alors notre chemin va être, en gros, le chemin va être, où devrais-je regarder ? Slash, finit par lier l'expression, que dois-je chercher ? Je dis donc que je cherche le nom de tout ce qui se trouve dans le blob. C'est une expression contraignante. Donnez-moi le nom pour qu'il me permette d'accéder à ce fil de discussion. Et puis la connexion au compte de stockage, il va à peu près demander quelle icône de stockage dois-je utiliser ? Il va donc être défini par défaut sur celui déjà associé à l'AP dans lequel la fonction est hébergée. Je vais donc aller de l'avant et cliquer sur Créer. Et pour celui-ci, passons au code et au test, où nous verrons que nous avons informations provenant d'un, le flux qui s'appelle mon blob. Et puis le nom qui est cette expression de liaison que nous avons configurée. Ensuite, nous avons le bûcheron. Bien sûr, c'est assis et regarde ce blob. Passons maintenant à la fonction point JSON et regardons à nouveau. Nous avons donc le nom du type Blob Trigger, nous avons le chemin, les échantillons, éléments de travail de tiret, la barre oblique. Ce que nous devons faire, c'est d' avoir un blob qui porte ce nom. Si je regarde mes comptes de stockage et que je veux accéder au stockage, j'y vais et au cas où vous ne le connaissez pas, vous pouvez accéder au tableau de bord, vous pouvez le voir sous toutes les ressources. Si ce n'est pas le cas, vous pouvez simplement accéder aux comptes de stockage. Ensuite, vous pouvez cliquer sur Comptes de stockage. Cela ne montre pas tous vos conteneurs. Ces conteneurs sont donc vraiment l'espèce dans laquelle les fichiers seront stockés. Je ne veux pas avoir de conteneur de ce nom. Quel que soit le nom que je serais assis là certains éléments de travail en pointillés étaient par défaut. Nous n'avons pas changé cela. Quel que soit le nom que vous y mettez, vous devez vous assurer que vous avez un blob qui existe avec ce nom. Je vais donc créer ce conteneur, aller l'avant et le faire et savoir qu'il existe. Je peux commencer à ajouter des fichiers. Je vais donc simplement télécharger un fichier de test que j' ai sur mon ordinateur. Il suffit donc de cliquer sur Charger, de sélectionner le fichier. Et parfois, cela peut être plus rapide si vous disposez de Storage Explorer. agit donc d'un outil tiers qui, si vous le souhaitez, vous pouvez installer Microsoft Azure Storage Explorer qui vous permet de gérer tous ses comptes de stockage et tout ce qui se trouve sur votre ordinateur, mais c'est une conversation pour une autre fois. Divisez le fichier, puis choisissez mon fichier de test et téléchargez-le. Et vous voyez que je l'ai téléchargé dans l'onglet. Si je retourne à la fonction et que je regarde le journal, vous voyez ici, il qu'il voit un nouveau fichier et que c'est le chemin d'accès. Vous voyez le nom ici, blob dash test.txt. Vous voyez le temps d'insertion de temps créatif sur toutes ces choses. C'est exactement comme ça que vous pouvez vous asseoir et regarder l'oreille de rangement pour voir. Vous vouliez peut-être compresser les images dès qu'elles sont téléchargées. Peut-être voulez-vous les déplacer ou les renommer. Il y a un certain nombre de choses que vous pouvez faire avec ce genre de choses. Encore une fois, vos contextes détermineront toujours votre application. 11. Examen de la section - Fonctions azures différentes: Alors, où est la fin de cette section ? Et nous allons juste passer en revue ce que nous avons appris. Un au cas où vous l'auriez raté la première fois que nous l'avons refait, et nous l'avons fait trois fois de plus. Nous savons comment créer une nouvelle fonction. Ainsi, à l'intérieur de notre fonction, nous créions et ensuite nous choisissons dans la liste, celui, les modèles qui conviennent le mieux à ce dont nous avons besoin. Il est préférable de le créer à partir des dix pieds plutôt que d'en créer un, puis de le personnaliser pour un autre. Mais travaillons simplement avec ce qu' il nous donne en tant que modèles. Et nous avons regardé le déclencheur HTTP, nous avons regardé le déclencheur de minuterie et nous avons examiné le déclencheur Blob Storage. Toutefois, en fonction des différentes ressources et services avec lesquels vous pouvez interagir, vous pouvez commencer utiliser le modèle approprié dès le départ. En examinant nos demandes HTTP sur lesquelles nous devons nous concentrer, nous avons vu que nous obtenons un mini tableau de bord qui nous permet de voir les exécutions qui ont échoué, combien de fois nous avons réussi, peut-être 400 appels, clause 500, etc. Tous ces, hum, sont facilement disponibles pour nous. Nous pouvons obtenir l'URL de la fonction, que nous avons établie le code ou la clé attachée, ce qui nous permet de la brancher dans n'importe quelle application. Nous avons également discuté du fait que lors de la création de la fonction, au moins la fonction HTTP, nous pouvons la créer en tant qu'anonyme ou pour un accès anonyme pour un niveau de fonction, de sécurité ou la mosquée ou au niveau administrateur. sécurité. Nous avons examiné tout cela. Celui-ci est limité en dehors du niveau de fonction tel qu'il se présente. Le test Code Plus. Nous pouvons examiner le code que nous devons modifier. Bien sûr, ce que celui-ci fait c' est qu'il apparaît à la fois dans la chaîne de requête et le corps de la requête en fonction du type de requêtes que nous effectuons, nous n'utiliserions pas l'une et l'autre peut-être, ni les deux. Cela dépend de votre contexte. Nous pouvons toujours tester par elle-même à partir de cette interface et nous pouvons consulter les journaux ici pour voir ce qui se passe en fonction de nos informations de journal que nous écrivons dans notre code. C'est donc l'ère de la console qui nous donne toutes les données. En conséquence. Sachez que lorsque nous allons à l'intégration, cela nous donne un joli petit écran de flux de travail qui nous permet de modifier certaines liaisons et nous examinerons les liaisons plus tard. Nous avons donc des liaisons d'entrée et des liaisons de sortie. Nous avons le déclencheur que nous pouvons modifier. Nous pouvons remonter au code. Si nous regardons dans Monitor, nous voyons ici que nous avons accès aux informations de l' application. Parce que rappelez-vous que nous l' avons activé lorsque nous avons créé la fonction. Nous pouvons donc voir toutes les invocations. Chaque fois qu'il a été exécuté, quel était le résultat, combien de temps cela a duré, était une exécution réussie ou non. Nous pouvons également rechercher dans les journaux des journaux plus détaillés de tout ce qui s'est passé ou se passe avec l'application. À ce moment-là. Nous pouvons également passer aux touches de fonction et nous pouvons créer une nouvelle touche de fonction si nous le voulons, nous pouvons en révoquer une, nous pouvons renouveler. Si nous devons avoir un contrôle total sur le fonctionnement de cette fonction. Et tout cela n'est que la fonction de requête HTTP. Mais nous avons également vu que, même s'il est similaire, chaque type de fonction a ses propres nuances en fonction de ce qu'il est là. Le minuteur en a déclenché un, il fera quelque chose de temps temps en fonction de l' expression Cron que nous avons spécifiée. Celui de Blob était en train de nous regarder de l'espace pour que notre fichier soit déposé là, puis il peut le traiter. Toutes ces choses sont donc possibles lorsque tout cela est fait, nous avons terminé cette section. Lorsque nous reviendrons, nous allons envisager utiliser Visual Studio pour créer une fonction. Et nous verrons quelles sont les différences entre le fait de le faire sur le portail et l'utilisation de Visual Studio sur notre machine. 12. Les fonctions azures dans Visual Studio: Très bien, donc dans cette section, nous allons créer certaines fonctions utilisant Visual Studio. Ce que j'ai fait ici, c'est que j'ai sauté à Porto, que je crée, suis allé à des fonctions, puis j'ai sélectionné Visual Studio dans la liste déroulante. Et ils décrivent tout ce dont vous avez besoin pour que cela fonctionne. Ils sont toujours mentionnés dans Visual Studio 2019. Donc, si c'est ce avec quoi vous travaillez, vous ne pouvez suivre aucun problème. Mais j'utiliserai Visual Studio 2022 pour cette série d'activités. Vous pouvez simplement suivre ces instructions. Et vraiment, c'est à peu près ce que j'ai vécu avec vous. Si vous voulez simplement lire cela et ignorer le reste de ces leçons, alors c'est à vous de choisir. Mais pour l'instant, je vais continuer et nous allons juste dans la prochaine vidéo, sauter sur Visual Studio et commencer. 13. Créer une application de fonctionnement: Très bien, donc à ce stade, je suppose que vous avez déjà installé Visual Studio et que vous avez déjà configuré votre charge de travail Azure, comme nous l'avons mentionné au début de ce cours. Pour commencer, nous allons sauter par-dessus et créer un nouveau projet. Ensuite, vous pouvez filtrer. Vous pouvez toujours rechercher une période de modèles comme fonctions. Ou si vous l'avez déjà fait tout de suite. À un moment donné, ce serait sur le côté. Ici. Je vais juste voir 0 fonctions Fundamentals. C'est le nom du projet et de la solution. Et puis je viens de cliquer sur Créer. À ce moment-là, ils vont me poser quelques questions. Premièrement, quel type de modèle ai-je aimé ? Si semblable au portail où nous pourrions choisir un modèle, ils me demandent : Voulez-vous un service à la fois déclencheur, etc. Vous verrez dans les modèles. Cette fois, je vais aller avec ceux vides pour que nous puissions faire un peu d'exploration. Je vais donc dire vide et ensuite je peux utiliser un émulateur de stockage. Donc, si vous le faites sans avoir peut-être accès direct à l'abonnement Azure, ou si vous n'êtes pas encore allé aussi loin avec Azure, vous pouvez simplement utiliser un émulateur de stockage où nous allons prétendez que vous avez un stockage de cônes achetés hors cours avec quelques limites. Je vais donc continuer tout cela et continuer et cliquer sur Créer. Une fois que ce projet est créé, nous pouvons examiner certains des fichiers disponibles. J'ai donc voulu commencer par les dossiers du projet. Ainsi, dans dotnet, les choses depuis .net Core trois points un O boards, lorsque vous cliquez sur le fichier d'approche CS, vous pouvez voir le fichier XML derrière lui. Vous pouvez toujours cliquer avec le bouton droit de la souris et accéder à Modifier le fichier Projet et vous obtiendrez également cette vue. Ce dossier est un peu plus gros. Ce fichier ne fait décrire la police que nous ciblons, le framework dotnet cherche et nous utilisons version Azure Functions au moment de cet enregistrement, il s'agit de la dernière et le plus grand. Et quand nous allons travailler, nous devons référencer fonctions de points du paquet Microsoft.Net.SDK. Et ici, il s' agit de deux fichiers qui nous sont donnés pour héberger dot JSON et local dot settings.js SON. Et ils nous font savoir qu'ils vont les copier dans le répertoire de sortie du settings.js local sur chacun d'entre eux répertoire de sortie du settings.js local sur chacun d' qui ne vont jamais dans un répertoire publié. Et c'est vraiment parce qu' il s'agit d'un fichier local, mais nous verrons pourquoi dans quelques uns. Donc, si nous passons au fichier JSON de point hôte, il ne s'agit que d'un fichier de configuration. C'est dire OK version 2, nous verrons ce que cela signifie dans quelques-uns, mais il y a aussi certaines configurations lors journalisation où il voit qu'il devrait utiliser Application Insights, qui c'est ce que nous savons que nous avons activé dans notre fonction. C'est vraiment tout ce qui se passe là-bas. Lorsque nous examinons les paramètres du lot local, JSON, cela nous fait savoir qu'il n'est pas chiffré et qu'il a certaines valeurs. Donc, le stockage 0 Web Jobs, nous savons que c'est censé être le compte de stockage associé à une fonction. Mais parce que nous utilisons le stockage de développement défini sur vrai, c'est la valeur qu'il perçoit. Il suffit de prétendre qu'il existe à peu près. Ensuite, il nous donne le travail ou l'exécution des océans qui est défini sur dotnet, ce qui pourrait être basé sur le type de langage utilisé. Mais parce que nous utilisons C-sharp, nous avons besoin d'un temps d'exécution dotnet. Par défaut, cette valeur est définie sur dotnet. C'est donc une visite de base de cette fonction. Et les deux dossiers que nous avons obtenus. Lorsque nous reviendrons, nous commencerons à écrire du code pour écrire une fonction. 14. Fonction de test dans Visual Studio: Très bien, maintenant que notre projet est opérationnel, ce que nous n'avons pas est une fonction réelle. Très bien, je vais donc cliquer avec le bouton droit sur le projet, aller dans Ajouter, puis je suis allé voir la nouvelle fonction Azure. Lorsque je le ferai, je choisirai le nom de cette fonction et je laisserai simplement la fonction par défaut un point CS ne veut pas que ce soit un point CSS cette fois, mais je laisserai le nom par défaut. Allez-y et appuyez sur Ajouter. Je sais que cette fenêtre de dialogue nous demande quel modèle nous aimerions. Nous avons donc tout d'abord que lorsque vous créez un projet, nous avons choisi un projet vide , mais c'est de l'argent. Pour chaque fonction que nous allons créer, nous voyons les mêmes modèles que ceux que nous aurions vus dans le portail. Et chacun d'entre eux nous poserait les mêmes questions de configuration que celles que nous aurions vues si nous le créions dans le portail avec un minuteur était encore en mesure de configurer le calendrier avec le blob, nous devons toujours mettre en place la connexion. Eh bien, celui-ci est un peu différent de ce que nous avons vu auparavant, où nous nous asseyons pour tracer le chemin et un certain nombre de choses. Eh bien, je vais suivre un chemin de moindre résistance. Allons avec le déclencheur HTTP et je vais choisir un déclencheur anonyme cette fois. Et allons-y et ajoutons. Une fois cela fait, nous obtenons ce fichier de fonctions. Et je remarque tout ce que nous avons eu, c'est que les points CSV, les points CS6 cinq. Nous n'avons pas non plus de fonction que le fichier JSON. Ce qui se passe, c'est que lorsque nous utilisons Visual Studio pour créer nos fonctions, il va en fait les compiler dans une DLL. Et si vous utilisez Dotnet depuis assez longtemps, vous savez ce qu'est une DLL. Et puis cette DLL, nous aurons toutes les informations que le portail doit utiliser une fois déployé pour vérifier configurations et tout ce que je l'ai écrit. Il sera donc précompilé par Visual Studio et simplement déployé Azure plutôt que dans un 0, puis compilé dans un 0, puis utilisé dans Azure, comme ce que nous faisons dans le portail. Vous êtes donc probablement plus familier lorsque vous écrivez votre code et que vous avez un meilleur accès à l' intelligence et aux ressources ici dans Visual Studio, nous pouvons également gérer beaucoup de débogage. mieux car nous pourrions simplement l'exécuter en mode débogage et définir nos points d'arrêt comme nous le ferions avec n'importe quel autre type d'application que nous allons construire à l'intérieur de Visual Studio. Ici, nous avons une classe statique , puis nous avons le nom de la fonction. Ensuite, nous avons une méthode statique appelée run, qui sait qu'il s'agit d'un déclencheur HTTP. Il sait que son niveau d'autorisation est anonyme, que je peux toujours changer ici pour fonctionner à la fois bien sûr, il faudrait avoir plus de configuration autour de cela avec la clé, etc. Mais C'est anonyme. Nous avons les différents types de demandes acceptées. Alors GET et publiez. Ensuite, nous pouvons définir une racine et un certain nombre de choses qui sont à notre disposition ici. En fin de compte, le code ou le code dans le corps de la fonction elle-même ressemble à ce que nous avions vu précédemment. Si nous devions exécuter cela et que je vais juste toucher F5 et je vais définir un point d'arrêt juste pour vous montrer que le débogage de ces travaux. Si je touche F5, il va vers Visual Studio. choses de Visual Studio. Si c'est votre première fois, vous pouvez le voir installer des outils au fur et à mesure. Mais ici, nous voyons que c'est ouvert. Il nous fait donc savoir que pour accéder à cette fonction, nous devons envoyer une demande via cette URL. Je vais emprunter cette URL et je vais utiliser un outil que nous utilisons pour tester l'EPA appelé Postman. Donc, si vous n'avez pas de post-argent, vous pouvez toujours l'installer. Il est assez facile de trouver des POSTS ME n, mais c'est un bon outil pour simplement descendre requêtes HTTP aléatoires lorsque vous testez. Je vais donc juste aller de l'avant et mettre l'URL. Je vais le laisser comme je l'aurai. Et pour les paramètres que je vais mettre dans ce paramètre de nom. Et je suis allé voir le test du facteur comme la valeur. Ensuite, lorsque je l'envoie, il se connectera à notre application en cours d'exécution, IACUC prenant les points d'arrêt. Notez donc que c' est un point d'arrêt, je peux réellement interroger mes objets. Examinons donc la demande elle-même. L'objet request contient tout ce qui concerne les requêtes HTTP. Il y a un mythe qui était utilisé. Le chemin, tout ce que j'ai besoin savoir à peu près si je n'interroge pas, je vais voir que le okayed trouvé un dans la liste et qu'il a le nom de clé et l'ajustement de la valeur là-bas. Je peux m'assurer qu'il est censé avoir le bon nom. Donc, si je viens de frapper F5, je peux supprimer ce point d'arrêt, et je viens de frapper F5 pour qu'il continue. Ensuite, la fenêtre de la console est apparue lorsque vous êtes passé en mode débogage. Mais si je retourne à Postman, qui est l'outil qui a fait la demande, alors vous verrez qu'elle a répondu par un 200. Bon, bonjour les tests du facteur. Cette fonction déclenchée HTTP s'est exécutée correctement. C'est juste que les tests locaux peuvent se produire, non. Nous pouvons donc utiliser des outils comme Postman et tout autre outil que vous pourriez avoir, peut-être Fiddler ou même votre navigateur. Et essayez de faire ce genre d'opérations. Nous pouvons déboguer le savoir, et nous pouvons mieux interroger notre application ou une fonction, désolé, code au fur et à mesure que nous construisons ou des règles métier pour le nœud, c'est vraiment tout. Nous savons maintenant comment créer une fonction à l'aide Visual Studio Hall pour la tester et maintenir intégration à des outils tiers votre navigateur afin de déclencher HTTP ou des requêtes. Sachez que, au fur et à mesure, nous deviendrons un peu plus compliqués. Mais pour l'instant, c'est tout pour la façon dont nous créons une fonction à l'aide de Visual Studio. 15. Examen de la section - Fonctions dans Visual Studio: Très bien les gars, donc c'est vraiment tout pour cette section, nous avons examiné comment configurer Visual Studio 2022 ou 2019 avec Azure lié aux sets. Nous avons donc installé votre charge de travail et cela nous permet de créer nos fonctions. Et ce n'est vraiment qu'une fonction. Vous voyez donc ici que chaque fonction que nous créerions dans ce projet serait un fichier autonome qui est une fonction. Lorsque nous le déploierons, ce que nous ferons plus tard. C'est juste nous mouiller les pieds. Mais lorsque nous déployons tout ce projet, il le déploie en tant que fonction avec différentes fonctions. Si nous avons un certain nombre de choses que vous souhaitez accomplir et une fonction par tâche, nous avons un projet avec chaque fonction pour la tâche, une configuration de configuration régissant l'ensemble de ces fonctions. interagissent les uns avec les autres et probablement avec tout autre service dont ils ont besoin et tout service tiers lors de ce déploiement est effectué. Lorsque nous reviendrons, nous examinerons comment utiliser Visual Studio Code pour développer vos fonctions Azure. 16. Utiliser des outils de base de la fonction Azure: Très bien les gars, alors passons directement à cette section où nous discuterons des fonctions Azure utilisant Visual Studio Code ainsi que des principaux outils. Donc je suis sur un pH ici, nous travaillons avec un outil de base de fonction 0 est la rubrique pour que vous puissiez y arriver, vous pouvez facilement Google vos outils de base de déshydratation de mousse, et c'est la documentation Microsoft Ciceronian, les principaux outils nous permettent de développer et de tester des fonctions localement. Il s'agit donc d'une meilleure option que Visual Studio car elle est multiplateforme. Il crée donc un environnement d'exécution sur votre machine pour simuler à quoi doit ressembler le moteur d'exécution de la fonction 0. Et vous pouvez ensuite développer et tester localement, bien sûr, avant de publier. Bien sûr, une fois de plus, les visites sur le vous permettent de le faire, mais ce n'est pas toujours une option basée sur votre système d'exploitation et d'autres limitations que vous pourriez avoir. Ce que nous pouvons faire avec les outils principaux, si nous faisons défiler vers le bas, nous voyons les différentes versions. Donc, en ce moment, j'utilise la version quatre parce que j'utilise dotnet six puces, bien sûr, en fonction de ce que vous êtes coincé ou de n'importe quelle version de dotnet, assurez-vous que vous allez utiliser la bonne version des principaux outils d'installation. Nous avons les instructions Windows, Mac OS et Linux, n'est-ce pas ? Donc, en fonction de votre système d'exploitation, vous allez de l'avant et utilisez celui dont vous avez besoin. Je suis sous Windows, je vais utiliser celui 64 bits qui lance le programme d'installation Windows typique auquel nous sommes habitués. Et nous pouvons simplement aller de l'avant et cliquer Suivant à chaque fois et le laisser installer. Et pendant que cela se passe en arrière-plan, je vais juste pointer jusqu'à ce qu'ils puissent également accéder aux principaux outils de GitHub. Vous pouvez donc accéder au projet Azure et attendre avec impatience comptes Azure Functions ou Azure plutôt, Andrew for Azure Functions en tant qu'outils principaux Functions. Et puis que ceux-ci ont des instructions d'installation en fonction ce que vous êtes bloqué, probablement un peu plus d' informations que vous ne le verriez facilement dans la documentation Microsoft. Cette option existe donc également. Personne ne dit que c'est fini, je vais juste lancer mon code Visual Studio. Et ce que je fais généralement chaque fois que j'ai un nouveau projet à construire, c'est que je vais simplement créer un nouveau dossier. J'ai créé et ouvert un nouveau dossier quelque part sur ma machine. Et je suppose que vous connaissez Visual Studio Code, mais si ce n'est pas le cas, ce que je fais généralement est de cliquer sur Ouvrir le dossier et de naviguer vers l'endroit où je veux créer le dossier et puis utilisez ce dossier que je viens de créer. Et c'est ce qui crée mon projet. Je vais faire toutes mes opérations sans rapport avec la fonction 0 ici. Dans cette interface. Permettez-moi de rendre cela un peu plus grand pour que nous puissions le voir. La prochaine chose que je voulais faire est d' ouvrir une fenêtre d'invite de commandes. Donc, si vous êtes sous Linux, si vous êtes simulé, vous êtes peut-être différent d'Hawaï, je l'utilise, mais au bout du compte, nous pouvons tous convenir que l'invite de commande ressemble beaucoup à toutes les plateformes toutes les commandes que j'utiliserai ici seront utilisables dans n'importe quel système d'exploitation que vous utilisez pour vérifier. Tout d'abord, ce que j'ai fait, c'est de naviguer dans le dossier où je connais mon projet. Et puis je ne l'ai pas vu. Et c'est là que nous sommes allés vérifier que les principaux outils ont été installés avec succès. Nous avons donc ce joli inconnu particulier. Ensuite, nous avons toute la documentation autour des différentes commandes que nous pouvons exécuter. Ici, nous voyons que l'unité créerait une nouvelle fonction dans le dossier actuel et initialiserait un dépôt Git. Essayons donc celui-là. Je l'ai donc parcouru si UNC espace dedans. Ensuite, il va me demander de sélectionner le moteur d'exécution. Donc, bien sûr, je voulais diviser le temps d'exécution de Dotnet puisque nous utilisons C Sharp et le réduisons, donc ça fait son truc. Je vois ici qu'il est renseigné dans les fichiers en arrière-plan pendant qu' il a fait son truc. Non, j'ai essayé même commande à l'intérieur du terminal qui est intégrée à Visual Studio Code. Et comme vous pouvez le constater, j'ai une erreur. J'espérais donc que nous pourrions tout faire depuis l'intérieur du terminal plutôt que Visual Studio Code. Mais il est clair qu'il y a quelques limites et cela ne pose aucun problème. Il suffit donc de comprendre quel outil peut être utilisé pour les watts lorsque nous en avons besoin. Juste un coup d'œil sur le fuzzer ont été créés. Nous avons ce dossier de code VS qui a un fichier d'extension juste pour s' assurer que les outils Azure ou les outils fonctionnels 0 sont installés, nous donner la meilleure expérience possible dans Code Visual Studio. Nous avons également le gitignore. Il a créé ce fichier CSV que nous connaissons bien et les deux autres fichiers JSON qui étaient déjà familiers avec. Si je voulais une nouvelle fonction et juste, juste une note, rappelez-vous que lorsque nous avons fait func init, il nous demande d'exécuter. Par conséquent, vous ne voulez peut-être pas nécessairement un environnement d'exécution Dotnet.net. Vous voudrez peut-être passer une commande à temps ou un environnement d'exécution Python en fonction votre distorsion vis-à-vis votre langage et de votre environnement de programmation préférés. Et c'est tout à fait très bien. Le fait est qu'il prend en charge de nombreuses langues différentes. Je me concentre uniquement sur dotnet parce que j'ai une machine Windows. Et si vous utilisiez un simulacre et ce n'est pas vraiment une excuse. Je dis juste que je me concentre sur Dotnet parce que c'est ce que nous faisons pour ce cours. Donc, si je veux une nouvelle fonction, je l'utiliserai si vous ne voyez plus la commande , puis je dirais Nouveau. Et si vous n'êtes pas sûr, vous pouvez toujours revenir en arrière et regarder les commandes qui me permettraient de savoir dans la liste quel nouveau type R, quel modèle je souhaiterais pour ma nouvelle fonction. Je vais donc en choisir un que nous n'avons pas fait auparavant, ce petit déclencheur Cosmos DB. Je peux le faire. Appuyez sur Entrée, puis ça va dire quel devrait être le nom b. Je suis allé voir la fonction déclenchée par Cosmos DB. Et quand j'appuie sur Entrée, il ira de l'avant et fera sa magie. Et en arrière-plan, vous verrez ensuite la fenêtre contextuelle de fichier appropriée dans votre code Visual Studio. Cela résume tout le week-end, utilisez les principaux outils Azure et la ligne de commande pour démarrer le processus. Maintenant, le problème est que vous n'utilisez peut-être pas Visual Studio Code comme éditeur. Vous utilisez peut-être un autre éditeur, mais pour utiliser les principaux outils, vous pouvez tout faire ici. Et même si vous utilisiez Notepad Plus, Plus, vous pouvez simplement modifier les fichiers déposés dans le dossier une fois que déposés dans le dossier vous exécutez vos commandes ici. Ainsi, lorsque nous reviendrons, nous allons envisager de gérer le projet, regroupant que Visual Studio Code. 17. Utiliser le code Visual Studio: Très bien les gars, nous allons donc utiliser Visual Studio Code pour démarrer une fonction à partir de zéro. Et nous examinerons les différents outils et les différentes nuances qui le différencient de l'utilisation des principaux outils et de Visual Studio lui-même. Cela étant dit, commençons. La première chose que vous voulez vous assurer que nous l'avons mentionné plus tôt, mais je le mentionnerai encore une fois. Assurez-vous que l' extension Azure Functions est installée. Sachez ce que j'ai, c'est l'extension Azure Tools avec laquelle il s'agit d'un pack d'extension. Il est donc livré avec un tas d'extensions liées à Azure. Et je viens de le faire parce que je fais quelques développements Azure. Je préfère les avoir juste quand je suis prêt pour qu'ils partent à la chasse à l'époque. Cependant, si vous ne voulez pas le parc entier, pas de problème. Vous pouvez simplement rechercher l' extension Azure Functions en effectuant une recherche ici. Et celui-ci va juste vous donner ce dont vous avez besoin pour être sûr de pouvoir réaliser votre développement Azure Function. Le simple fait de lire la documentation est très informatif et il vous explique comment procéder pour l'installer, la configurer exécuter et le déployer. Quand le moment est venu. L'emblème de la documentation est légèrement différent de l' emblème que j'ai à l'écran, moins au moment de cet enregistrement. Mais c'est très bien. devine qu'ils vont travailler de façon très similaire de toute façon. Je vais donc simplement cliquer dessus en tant que section, puis cela me permet d'afficher toutes les fonctions. J'ai créé un tout nouveau dossier, ce que vous pouvez également faire si nécessaire, mais passons à bout de cela. J'ai donc la possibilité de créer un nouveau projet, créer une nouvelle fonction lorsque je suis déjà dans notre projet et de déployer la fonction, qui serait l' ensemble du projet. Je vais donc commencer par un projet créatif. qui me demande alors, bizarre, voulez-vous mettre ce nouveau projet pour que vous puissiez naviguer et créer un nouveau dossier où qu'il se trouve. J'ai déjà créé un dossier appelé votre téléphone, le code fondamental de Sean. C'est essentiellement au même endroit que le précédent où j'utilisais les outils de base qui nous diront d'aller de l'avant et de le sélectionner. Puis les incidents m'ont demandé de choisir une langue. Je vais me mélanger. C'est au-dessus de ça. Nous avons eu affaire à C-Sharp tout ce temps, principalement parce que c'était Windows et parce que j'utilise Visual Studio et que nous utiliserons Visual Studio à l' avenir, tous deux dans une séance open source. Ce sont toutes des options que vous pouvez utiliser avec quelqu'un. Typescript fait quelque chose de différent, puis ils veulent un modèle pour la première fonction que nous pouvons ignorer qui ressemblera à la création du projet vide dans Visual Studio, puis à l'ajout des fonctions ultérieurement. Dans cette situation, je vais commencer par un déclencheur HTTP. Laissez-moi le faire. Je vais laisser le nom par défaut, appuyer sur Entrée, et je vais le rendre anonyme. Et avec tous ces beignets qui créent. Et puis il a terminé les grilles dans un projet, puis il a fait un tas de choses. Et il a initialisé un référentiel Git pour moi avec tous ces fichiers par défaut lorsque je remonte la liste du projet, ai un dossier de code VS avec les extensions et initialisation des fichiers pour m'assurer que j'ai la meilleure expérience lors de l'utilisation de Visual Studio Code, j'ai un dossier pour le déclencheur HTTP qui a la fonction dot js. Nous savons déjà ce que ce fichier est loin que nous l'avons déjà vu auparavant. Il contient également ces fichiers d'index. Donc, contrairement au fichier C-Sharp, qui a un fichier CSS à points, j'ai choisi TypeScript, donc ce n'est pas un fichier TSV, qui n'est vraiment qu'un fichier JavaScript encapsulé. Si vous connaissez porte, pas de développement ou angulaire, alors vous codez TypeScript ressemble à peu près une version JavaScript de ce que nous savons déjà. Il prend la demande comme une requête HTTP. Il fait son contexte, qui est le contexte de la fonction dans laquelle la journalisation. Ensuite, nous allons obtenir le nom de la chaîne de requête ou du corps. Ensuite, nous imprimons selon si les données sont revenus ou non. Nous avons un dossier. Nous avons une fonction ignorer le fichier, j'ai un fichier d'ignorer cadeau, puis nous avons les fichiers JSON hôte. Vous voyez donc ici que le moteur d'exécution est rongé la dernière fois qu'il serait point dans ce fichier de package. Et nous avons un fichier de configuration TS. Très bien. Ce sont tous les fichiers que nous sortons de la boîte. Je vais juste aller de l'avant et lancer cette personne pour commencer à déboguer. Vous pouvez le voir installer d'autres éléments sur votre ordinateur. Bien sûr, avoir déjà installé la dernière version de Node dans cette situation est impératif pour que cela fonctionne localement car cela dépend évidemment de la nausée, nécessité d' installer Node et NPM sur votre machine. Nous voyons ici dans la console que nous avons l'URL de notre fonction. Nous ne détenons pas le testicule ou nous pouvons utiliser un navigateur ou nous pourrions utiliser Postman. Donc pour usurper, demander à quelqu'un d'aller chercher un facteur, je vais mettre la nouvelle URL, donc c'est tout ce que vous, ou ils vous donnent ici, slash api slash HTTP trigger one. Et puis je suis allé mettre la chaîne de requête pour le nom. Je suis donc allé envoyer ça. Vous voyez ici que le logo et l'arrière-plan sont devenus fous, non ? Il a donc diminué l'activité. Et bien sûr, nous avons obtenu cette réponse comme une réponse de 200 OK. C'est à peu près tout pour utiliser du code Visual Studio, déboguer la formation dans Visual Studio Code. Et ensuite, nous pouvons bien sûr être déployables. Nous avons examiné tout cela. Nous allons passer en revue le développement de toute une série de fonctions dans quelques uns, mais nous ne faisons que le faire étape par étape ? Non. Juste avant de passer à autre chose, vous pouvez suivre si vous le souhaitez, mais vous n'avez pas nécessairement à mettre dans le moteur d'exécution des outils principaux. Il est impératif que vous sachiez quelle version du moteur d'exécution des outils principaux par rapport la version commutée de Dotnet vous utilisez. Dotnet six est encore relativement nouveau au moment de cet enregistrement. L'outillage ne sera pas toujours laborieux et 24 semaines. J'ai donc franchi les mêmes étapes, une fois de plus, créant un nouveau projet, mais j'ai choisi C-sharp cette fois. Et vous voyez ici que vous pouvez utiliser .net Core trois sont dotnet F5. Je suis allé choisir Dotnet F5, puis je suis allé faire un déclencheur HTTP de la même manière. Donc, bien sûr, j'ai dit que tout cela ouvrait une toute nouvelle fonction en gravant le dossier, désolé. Il suffit de tout réutiliser ici. C'est une fonction C-sharp qui ressemble ce que nous avons vu. Donc, si je fais juste une course, je voulais juste ruiner et m' assurer que mon environnement d'exécution est bien, je serais arrêté pour construire un projet Dotnet à l'aide de Visual Studio Code. Comme je l'ai dit, l'outillage n'est peut-être pas nécessairement stable. Cela doit être à l'époque, mais j'espère que lorsque vous suivez ce cours, toutes ces nuances ont disparu. Donc oui, il a été couronné de succès. Ici, nous voyons que l'exécution est en marche et que je débogue avec succès ma fonction C-sharp beast. Je vois tout cela pour dire que peut-être lorsque vous lancez avec un outil de base et que vous êtes peut-être dans une version, puis que vous essayez de le modifier dans Visual Studio Code, puis d'essayer de courir en mode débogage dans Code Visual Studio, vous n'avez peut-être pas nécessairement la meilleure expérience si l'outillage et les aversions ne sont pas les mêmes, vous risquez de recevoir des erreurs bizarres telles que des configurations manquantes, etc. Donc je fais juste remarquer que si vous finiriez comme ça, il vaut mieux commencer au même endroit et tout faire au même endroit. Donc, si vous commencez par code Visual Studio, tout est là. Même chose avec Visual Studio, etc. Avec tout cela fait et dit, je vais appeler ça quitte cette leçon. J'espère que vous avez appris et équipé sur le terrain et prêt pour le projet à venir. 18. Examen de la section - Fonctions azures dans Visual Studio: Très bien, les gars, ainsi de suite. Dans cette section, nous avons examiné des outils alternatifs à Visual Studio. Visual Studio est un grand sondage pour Beast, bien sûr, mais ce n'est pas toujours la meilleure ou la seule option pour certaines personnes. Nous avons examiné le fait que vous pouvez réellement obtenir les outils de base. Vous pouvez le faire tourner à partir de là. Vous pouvez utiliser un éditeur de texte normal et quelques commandes dans l'invite de commandes. Et vous pouvez au moins avoir une bonne expérience dans le développement de votre téléphone. La montre montre le déploiement et l'interaction avec eux. Nous avons également examiné Visual Studio Code, qui est très critique par rapport à ce que Visual Studio vous offre. Et il dispose d'excellents ensembles d'outils, d'une intelligence pour vous aider dans vos tâches de développement. Il lui permet de déboguer tout comme nous empruntons quelques choses. C'est très bon, comme je l'ai dit, pendant une seconde. Si vous n'avez pas Visual Studio ou si ce n'est pas une option pour vous. Visual Studio Code est une excellente ressource à utiliser lorsque vous souhaitez développer vos fonctions Azure. 19. Liaisons de fonctions azure et fonctions durables (orchestration): Salut les gars, bienvenue. Dans cette section, nous allons examiner d'autres fonctionnalités ou fonctions que nous n'avons probablement pas encore abordées. Je suis donc allé un peu plus en profondeur dans les liaisons d'entrée et de sortie. Nous avons abordé cela plus tôt, mais nous allons passer en revue quelques exemples pratiques. Nous allons également examiner les fonctions durables et l' histoire de l'art. Et nous allons envisager la mise en place d'un gestionnaire. Nous allons donc utiliser Visual Studio Code pour la plupart de ces activités. Et vous verrez comment rendre les fonctions un peu plus robustes. Et tout le week-end leur permet d'interagir avec d'autres services en dehors d' un seul déclencheur ou d'une seule cause. Alors restez dans les parages. Nous avons beaucoup de choses à traverser. 20. Liaisons d'entrée et de sortie: Très bien les gars, donc dans cette leçon, nous sommes allés examiner liaisons d'entrée et de sortie. Les liaisons d'entrée et de sortie pour trop réfèrent littéralement à l' entrée et à la sortie, une source d'entrée et une cible pour une sortie. J'ai donc déjà créé un tout nouveau projet. Je suis allé à l'onglet Azara ici. Et puis j'ai dit qu'il crée un nouveau projet et qu'il affiche un nœud ou un modèle TypeScript pour celui-ci en particulier. Nous allons donc simplement utiliser ça ici. Non, je me rends compte avec l'outillage que certaines des choses que nous allons traverser, vous verrez différentes choses en fonction du modèle de projet que vous utilisez sur le fonctionnement de l'outillage. Rappelez-vous que beaucoup de choses sont neuves. Donc, au fil du temps, on peut obéir à la même chose et ne pas faire l'expérience de ce que je pourrais signaler comme une lacune potentielle. Cependant, je choisis ce chemin de la moindre résistance car nous avons un assistant lorsque nous voulons ajouter une liaison d'entrée. Lorsque nous recevons cet assistant et que nous mettons les informations appropriées sur ce qui va faire, c'est générer un bloc de code de configuration global. Donc, quel que soit le modèle, même si vous ne recevez pas l'assistant lui-même, vous pouvez toujours regarder si vous ne souhaitez pas suivre notre compte, suivre en fonction du type de modèle que vous avez sélectionné. Cependant, lorsque le code est généré et que nous vérifions que vous pouvez réellement le coller dans votre propre fichier JSON In dot et procéder simplement à une scène. À ces moments. Je vais tous les signaler, vous savez, une autre chose dont nous aurons besoin pour cette activité est l'émulateur de stockage Cosmos DB. Vous pouvez obtenir cela grâce à une recherche Google facile, simplement une recherche Google, un émulateur 0 Cosmos DB, accédez à la documentation Microsoft et vous pouvez l'installer sur votre PC Windows. Sachez que si vous ne disposez pas de cette option, vous pouvez réellement accéder à Azure et provisionner le service Cosmos DB par vous-même. Et c'est assez simple. Les étapes très similaires à ce que je vais faire dans l'émulateur. Nous pourrons être répliqués dans le tableau de bord, quel que soit le cas. Je vais donc utiliser l' émulateur pour cette activité. Cosmos DB servira donc de liaison d'entrée. Et quand nous serons prêts pour la partie sortie, nous fournirons une table Azure ou peut-être que lorsque nous y arriverons, nous pourrons le comprendre en fonction l'activité que je joue à l'oreille ici. Lorsque vous aurez installé l'émulateur DB et que vous lancez et que vous l'avez démarré, il apparaîtra dans le navigateur ressemblant à ceci. Et vous verriez qu'il vous indique qu'il est en cours d'exécution, vous donne l'URI, vous donne la clé primaire et vous donne la chaîne de connexion du paramètre. Nous allons avoir besoin de tout ça. Vous pouvez également accéder à l'explorateur. Vous pouvez créer une nouvelle base de données et y créer différents conteneurs. Je vais supprimer ça parce que je voulais le faire à partir de zéro avec vous. Commençons donc par obtenir cette chaîne de connexion , puis revenons à notre projet. Ce que nous devons faire, c'est laisser le projet ni cette nouvelle chaîne de connexion sauter dans votre fichier JSON local dot settings.js. Et ici, assurez-vous que le stockage Azure Web Jobs utilise le stockage de développement égal à vrai. Quel que soit le formulaire affiché dans l'exécution, nous savons quel est ce but ou quel est le but de cela. Mais mettons notre chaîne de connexion. Je vais donc appeler ça une connexion Cosmos DB. Ensuite, je vais voir deux-points et ensuite mettre la valeur qui est la chaîne de connexion principale que nous venons de sortir de l'émulateur. Revenons donc à notre émulateur et créons notre base de données. Donc, dans l'explorateur de la nouvelle base de données, et nous allons le faire, disons créer un blog. Ce que nous allons faire, c'est nous assurer que nous disposons du TIG pour le débit de provisionnement. Nous le laissons sur balance automatique. Et ce qui est génial avec les émulateurs que, quels que soient les paramètres que vous configurez ici, lorsque vous faites la version MLA, vous obtiendrez parfois une estimation suffisamment précise du coût qu'il en coûterait dans un raison particulière sur Azure. C'est donc un bon outil pour le développement local, les tests et la preuve de concepts. Nous allons appeler ça un blog. Et ensuite, ce que nous allons faire, c'est vous donner les nouveaux conteneurs. Il suffit donc de cliquer sur un nouveau conteneur et nous choisirons l'ID du conteneur. Le conteneur serait des poteaux. Et une bonne clé de partition, clé de partitionnement ici présente une valeur d'index à utiliser. Ce sera l'ID du blog. Il suffit donc de cliquer sur OK. Et ensuite, si nous déposons articles et que nous regardons les éléments que vous voyez ici, vous aurez donc l' ID de la publication et l'ID du blog est la clé de partition. Pendant que nous sommes ici, ce que nous allons faire est de mettre dans un billet de blog et vous pouvez ajouter quelques articles de blog, puce du concours x2i ici. Je vais juste mettre une pièce d'identité, un identifiant blog, les deux étant un. Le titre, le bloc de commentaires de contenu, juste quelque chose pour le faire ressembler. Quel est le vrai enregistrement de blog ressemblerait notre document dans Cosmos DB. Vous pouvez simplement aller de l'avant et le faire. Vous pouvez simplement cliquer sur un nouvel article. Vous obtiendrez cette section modifiable , puis cliquez sur Enregistrer une fois que vous aurez terminé. Ensuite, à la fin de l'opération, votre enregistrement recevra d' autres métadonnées. Vous n'avez pas à vous inquiéter à ce sujet. Mais c'est à ça que devrait ressembler l'enregistrement dans Cosmos DB. Passons à notre fichier JSON de points de fonction et ajoutons la configuration. Maintenant, il existe deux façons d' ajouter des configurations, et je vais le faire manuellement, ou du moins vous montrer la manière manuelle car en fonction de l'outillage et du modèle de projet que vous avez peut-être gâché, vous avez peut-être cette option ou non . Par exemple, j'utilise les fonctions TypeScript, le projet ou le modèle. Lorsque je clique avec le bouton droit de la souris, je vois l'option d'ajouter une liaison. Et ce que cela fait, c' est qu'il fait apparaître un petit assistant qui me permet de remplir les différents points de configuration en fonction du type de configuration que je fais. Tous les types de projets ne l'ont parce que j'ai remarqué qu'il n'est pas là dans un projet de fonctions C-sharp ou tenté. Je vais juste vous montrer à quoi ça ressemblerait. De manière générale, que vous utilisiez TypeScript, Python, Java, C-Sharp, etc. Sous la forme de JSON, c'est ici que toutes les liaisons sont configurées. Nous en avons donc ici, nous en avons un pour le N. Donc quand vous le voyez, cela signifie qu'il s'agit d'une liaison d'entrée. Lorsque vous voyez cela signifie qu'il s'agit d'une liaison de sortie. Nous en avions donc déjà deux par défaut, nulle part en ajoutant un autre. Vous pouvez donc simplement ajouter la virgule, démarrant un nouveau bloc d'objets. Et puis le type est Cosmos DB direction est dans le nom est document d'entrée. Vous pouvez changer cela par, vous pouvez appeler ça des blogs, quoi qu'il s' agisse, ce que ce nom va jouer un rôle dans le code lui-même. Je l'appelle donc le document d'entrée. Si vous utilisiez la valeur par défaut, l'assistant aurait également utilisé le mot ou le document d'entrée de nom par défaut. Toutefois, le nom de la base de données est blogue. Nous avons créé une collection appelée messages. Donc, nom de base de données, nom de collection. Ensuite, nous avons une chaîne de connexion assise. Cela portera le même nom que le flux de la clinique que nous avions créé précédemment. Ensuite, nous avons l'ID et l'ID du nœud de clé de partition. Voici quels paramètres de liaison devrais-je utiliser pour obtenir les valeurs d'ID. Donc, quand je vois la requête, c'est comme un super global à ce stade. Pour voir cette requête, il va s' apparenter à la chaîne de requête qui arrive. N'oubliez donc pas que le modèle par défaut d' une fonction déclenchée HTTP comporterait la requête point point de requête sur le nom de la variable. Ou dans C-Sharp, on examinerait la question. Par conséquent, la requête est exactement ce qu' elle reconnaît comme variable de chaîne de requête. Donc, une chaîne de requête recherche une variable appelée ID pour la clé de partition, nous utilisons également des histoires d'ID et la même chose, non, elles sont toutes les deux entre accolades car c'est plutôt comme une liaison. Paramètre de liaison par opposition à la valeur. Ce sont les paramètres de liaison que nous voulons. Non. Vous pouvez spécifier comme une requête SQL ici comme l'une des valeurs clés SQL requête SQL qui vous permettrait réellement dans le contexte d' une base de données Cosmos et potentiellement d'autres variables d'entrée liées à la base de données, liaison d'entrée, désolé, vous pouvez écrire votre instruction SQL ici pour leur obtenir une instruction SQL plus compliquée si vous le souhaitez. Mais dans ce cas, nous gardons les choses simples. Tout ce que nous voulons, c'est transmettre la pièce d'identité. Il devrait aller le chercher auprès de Cosmos DB pour nous, puis nous pourrons le traiter par la suite. Maintenant, je vais vous donner une démo rapide de ce à quoi ressemblerait le magicien. Il vous suffit donc de cliquer avec le bouton droit sur la fonction sur la liste. Dites à la reliure, vous choisissez, vous choisissez le type. Permettez-moi de zoomer pour que vous puissiez mieux voir. Et puis, comme je l'ai dit, nous utilisons Cosmos DB, vous choisiriez le nom, donc je le laisserai par défaut. Vous choisissez le nom de la base de données, vous choisissez le nom de la collection. Vous choisissez parmi la connexion, la chaîne de connexion dans vos paramètres, puis vous lui donnez l'ID du document. Donc, ça aurait été aussi contraignant. Donc, il sera dit requête. Juste pour le voir bizarre la clé de partition, j'aurais dit : D'où vais-je obtenir la valeur de la clé de partition ? Parce que j'utilise l'ID pour les deux pour la clé de partition. C'est pourquoi je dis ID de point de requête. Cependant, si c'était un cas où je devais transmettre l' ID séparément d'une clé de partition. Ensuite, je pourrais dire clé ou quoi que ce soit. Quel que soit le nom du paramètre que je m' attends en tant que clé de partition, je spécifierais ici. Et puis, à peu près, vous passez par là, puis j' appuierai sur Escape pour annuler si je ne veux pas que ça continue. Mais une fois que j'aurais appuyé sur la crainte que la requête SQL ait généré ce bloc. Peu importe. Il aurait également été inséré dans la requête SQL et il aurait été vide. Et je vous conseillerais de simplement supprimer cela parce que j'ai vu que cela cause des problèmes. Les problèmes ne sont pas vraiment clairs. Si vous avez utilisé l'assistant, vous auriez obtenu une requête SQL. Et il aurait été vide. Mon conseil serait que si vous n'êtes pas un vent de l'utiliser, il suffit de le retirer, vous pouvez procéder avec moins de préoccupation. Maintenant que nous avons configuré ou Cosmos DB, nous avons configuré la liaison, nous avons configuré notre chaîne de connexion, nous écrivons du code, refactorisé cette méthode pour vous. Et je suis allé souligner tous les changements. Je veux dire plein, vous pouvez simplement supprimer tout entre le premier journal des contextes et tout jusqu'au dernier, l' accolade de fermeture, à droite, donc juste vide ou la fonction. Donc, ça ressemble à ça. Désolé. Ça devrait ressembler à ça. Lorsque vous avez fini de le vider, vous pouvez le laisser si vous le souhaitez. Pas de problème. La première modification serait apportée à nos paramètres de fonction. Nous avons donc les contextes, nous avons la demande. Je sais que j'ajoute les documents d'entrée. Donc ce document d'entrée, et parce que j' utilise TypeScript, il est très fortement tapé. Mais cela vous permet de perdre quelqu'un pour en voir ici. Mais nous pourrions spécifier un type de données si nécessaire, mais je le laisserai comme n'importe quelle demande contextuelle. Je sais que j'ajoute deux points d'entrée, désolé. Et puis quel que soit le code qui existait auparavant. Non, dans le corps de notre fonction automne va faire, c'est dire si ce n'est pas le document d'entrée, puis dire que nous n'avons pas pu trouver cet ID, puis nous pouvons enregistrer ce message, mais je répondrai . Donc, les contextes pointent la réponse ou les risques, je suppose que cela signifie que la réponse est égale à. Ensuite, nous pouvons spécifier un modificateur de statut, le statut. Et même lors de tests dans les parties antérieures de cette scène de cours où nous le passons dans une mauvaise valeur et nous avons quand même obtenu 200. Bien, même s'il n'a pas trouvé la valeur censée être là, ce qui est faux. Les réponses Http doivent être très spécifiques. Donc, si vous activez le développement d' API, vous serez en mesure de l' apprécier. Si ce n'est pas le cas, sachez qu'ils doivent être précis. Donc, même mon avis 5400 ici est erroné. Et donc plus comme un 404404 signifie introuvable. Après tout, je vois qu'il n'a pas été téléphoné. 500 le serait si c'était comme une erreur fatale de mon côté, ce qui n'est pas le cas dans ce scénario particulier. Si ce n'est pas le document d'entrée et rien n'a été fourni ici. agit donc automatiquement de s'asseoir et de surveiller présence d'une valeur de liaison via la demande. C'est la liaison qui est spécifiée ici. Si aucune liaison Valley n' a été transmise, alors si cette valeur de liaison n'a rien trouvé dans la base de données, car ce qui se passe, c' est qu'une fois qu'elle aura vu , elle sera automatiquement transférée à Cosmos DB et vérifiez ce qu'il faut pour vérifier à nouveau. Donc, si vous n'avez rien trouvé à la fois, donc au moment où il arrivera ici, il saura si vous avez trouvé quelque chose ou non. C'est en JavaScript parce que c'est essentiellement dire si ce n'est pas le cas, alors nous disons que nous n'avons pas téléphoné, puis nous répondons avec un 404 et le message, il n'a pas été trouvé. C'est dans la ligne suivante. Nous allons voir répondre avec un 200 et le corps doit contenir contenu de ce document d'entrée. Très bien, n'oubliez pas que c'est juste le bloc JSON de JSON. Voyons donc à quoi cela ressemble. Je vais donc courir, comme d'habitude, je vais utiliser Postman pour faire ce test. Je transmets donc ce paramètre, cette chaîne de requête, ID est égal à un, et je reçois cette réponse 200 avec le contenu de cet ID de document qui n' était pas présent. Voyons voir. Je suis passé dans dix ans. Ensuite, je reçois les quatre cent quatre cents téléphone dans le message de blog et je n'ai pas trouvé autant de documents que vous auriez pu ajouter, qui avec n'importe quel identifiant, etc., il entrera automatiquement. C'est donc à ce moment que nous voyons une liaison d'entrée. Dès que la méthode est exécutée, je suis censé me lier à cette valeur particulière. Et c'est dans le but d'interroger cette ressource particulière ou interagir avec ce service particulier. Dans cet exemple, ou la liaison d'entrée recherche un ID conformément à notre configuration ici. Et une fois qu'il voit cet ID, ou une fois qu'il est appelé, il va faire un triangle vers la base de données Cosmos pour obtenir le document correspondant. Très bien, continuons sur cette ligne de pensée et ajoutons une liaison de sortie. J'ai donc déjà ajouté la configuration et vous pouvez simplement aller de l' avant et y ajouter. Donc, un nouveau bloc d'objets. Et puis le type cette fois est Q, la direction est Alt. Nous avons le nom. C'est le nom par défaut qui serait apparu dans l'assistant, le nom de la file d'attente, nous lui donnons un nom, puis la connexion, et cette fois il a besoin d'une connexion de stockage. Et nous avons le stockage Azure Web Storage, Web Jobs. Un lien là-bas ? Non, pour le contexte de ce que tout cela indique. Si vous ouvrez Azure Storage Explorer, vous verrez ici sous local et attaché à un compte de stockage. Un compte de stockage est donc à peu près endroit où vos blobs iraient. Et ensuite, il y a aussi des files d'attente et des tables. Nous utilisons donc les indices qui seront formés dans un compte de stockage. Bien sûr, nous sommes en train de l' imiter en ce moment. Si vous avez effectué un provisionnement sur Azure, vous pourrez y accéder ci-dessous ici. Cependant, localement, nous l'avons émulé afin que nous puissions accéder aux indices et à l'ancien Q, sorte que vous n'avez pas à créer ce Q lorsque vous exécutez les commandes que nous sommes capables d'écrire. S'il n'existe pas déjà, il va en fait le créer pour vous. C'est la beauté de tout ça. Vous n'avez donc pas besoin de le créer pour le moment. Je vous montre juste où surveiller la création de l'ancien Q. Si vous deviez passer par l'assistant pour cette liaison, laissez-moi vous montrer à quoi cela ressemblerait rapidement. Disons donc que nous voulions un outil Wu de liaison alt que nous voulons stocker dans la file d'attente. Ensuite, ils nous demanderaient le nom. Il y aura donc un élément de file d'attente de sortie quel que soit son nom. Ils ne lui ont probablement pas donné un nom différent ou cela vraiment pas d'importance car cela créera une nouvelle section de file d'attente de toute façon. Mais donnons-lui un autre nom. Ensuite, nous voudrions pointer vers la chaîne de connexion de stockage, qui, parce que nous effectuons des opérations locales, nous voyons utiliser les paramètres de développement. Et ensuite, vous seriez en mesure de continuer. Et ensuite, tout ce bloc de configuration aurait été généré pour vous. Encore une fois, vous avez deux façons de le faire. Si l'assistant n'est pas une option, vous pouvez toujours vous familiariser avec cette configuration. clés. Dans notre trimestre, nous allons faire un ajustement. Nous sommes à l'intérieur de la section où nous ne trouvons pas nos articles de blog. Nous allons juste envoyer un message à la file d'attente. Il va simplement envoyer ce message de réponse à la file d'attente. Je suis donc allé voir un contexte, des liaisons de points. Rappelez-vous que les contextes, les liaisons de points vont dire contextes. Allez chercher toutes les fixations que vous avez. Et puis récupérez-moi l'élément de file d'attente de sortie. C'est comme ça que nous l'avons appelé ici. Ensuite, le message de réponse est ce que je veux mettre sur cette file d'attente ou tout ce qui manque. Vous pouvez donc mettre un message différent. Il s'agit d'une file d'attente de messagerie, donc généralement basée sur du texte. C'est vraiment le seul changement que nous devons apporter lorsque lançons et que nous essayons de trouver un article de blog qui n'existe pas. Et jusqu'à présent, j'ai testé avec dix. Nous ferions en sorte que nous obtenions la réponse de la même façon. Mais si je saute dans l' explorateur de stockage et que je regarde cet Alt Q, je vais voir le ou messages en cours de dépôt dans la file d'attente. C'est à peu près un trou. Et la liaison alt, Alt, Output Binding fonctionnerait. Donc, la liaison d'entrée est essentiellement pierre sur montres et dit que lorsque j'obtiens cette valeur, je vais automatiquement déclencher un déclencheur pour récupérer quelque chose ou faire quelque chose. Et les liaisons de sortie, c'est ce que je vais envoyer à ce stade de l'exécution. Comme nous l'avons vu, vous avez un certain nombre d'options de reliure. Vous pouvez faire un SMS, vous pouvez faire un signal, notre mise à jour, la mise à jour du Hub. Vous pouvez faire une grille de péché, qui est un service de courrier électronique. Et vous pouvez faire HTTP, ce que nous avons fait. C'est un problème : les mois de protéines de liaison GTP. Donc, les contextes Dot Raise, c'est essentiellement dire dans le contexte, aller chercher les rayons. C'est le nom de celui-ci qui est court de réponse. Je suppose que si vous vouliez renommer cela, c'est tout ce qu'il faudrait. C'est donc vraiment ça pour les liaisons d'entrée et de sortie. Nous avons besoin de deux exemples très simples. En faisant ces exemples, nous avons également examiné différents outils tiers que nous pouvons aider à utiliser l'aide dans nos interactions. Même dans Visual Studio Code, je suis allé jusqu'à l'émulateur de Cosmos DB. Mais une fois que vous l'avez installé, vous n'avez pas forcément à aller dans le filtrage de gestion réel qui pourrait réellement le faire à partir ici, sous la section de la base de données dans Visual Studio Code parce que vous auriez vu ajouter notre émulateur attacher un émulateur ici. JE M'AI TOUCHÉ mortel. Il vous demanderait s'il s'agit de l' API Core ou DB for Mongo pour laquelle vous sélectionnez et elle coderait automatiquement la base de données Cosmos locale. C'est donc un moyen facile et agréable de faire une opération de 100 pour créer une base de données et la collection à partir d'ici même. Nous pouvons également gérer les machines virtuelles, mais nous n'avons pas de machines virtuelles dans ce cours. Et vous pouvez gérer vos fonctions à partir d'ici, etc. Il y a donc des outils. Une fois que vous comprenez comment ils fonctionnent tous ensemble, vous devriez aller bien. Si vous rencontrez des problèmes avec votre compte de stockage, ce que vous pourriez faire, je vous suggère simplement de mettre à jour votre Storage Explorer pour vous mettre à jour votre Storage Explorer assurer qu'il s'agit de la dernière version sur rétinal. Je suis en train de courir de 1 à deux. Je suis allé sur 1.170 certains problèmes parce qu'ils ont fait des mises à jour depuis 1 à deux. Et vous devriez que le millilitre azurite pour le développement local Azure Storage n' installe personne lorsque vous effectuez cet enregistrement, vous n' aurez probablement pas ces problèmes. Mais si vous travaillez avec un jeu d'outils plus ancien et que vous n'installez pas plus frais que je vous conseillerais d' installer un nouveau jeu d'outils n'installez pas plus frais que je vous conseillerais parce que cela m'a surpris. Premièrement, l'émulateur de stockage est ce qui aurait été fourni avec la version originale de Storage Explorer, mais cela n'a pas été obsolète car azurite est la nouveauté et il aurait dû être fourni avec Visual Studio 2022. Cependant, pour moi, cela n'a pas vraiment fonctionné de cette façon. Pour quelque raison que ce soit, j' utilise plutôt le npm pour l'installer. Vous aurez donc déjà installé npm ou Node JS it version ultérieurement. Si ce n'est pas le cas, vous pouvez aller de l'avant et l'obtenir. Mais pour suivre les activités, si vous utilisiez TypeScript, sachez simplement que vous auriez dû l'avoir déjà installé. Vous pouvez simplement afficher votre invite de commandes ou votre console et exécuter le programme d'installation qu' il a installé en arrière-plan. Ensuite, vous voudrez créer un dossier à cet emplacement ou ailleurs, puis exécuter cette commande pour vous assurer qu'il fonctionne en arrière-plan. Cela remplacera l'émulateur Azure Storage Explorer installé précédemment. Je ne vous montre ces choses que si vous rencontrez des problèmes parce que les problèmes sont naturels, mais il est toujours bon d'avoir les solutions. Vous pouvez tout faire, puis redémarrer votre explorateur de stockage , puis tout devrait pouvoir se connecter. Les symptômes de ne pas fonctionner seraient que la fonction ne s'exécutera pas. Ce que vous essayez de tester. Il va faire une pause. Et un autre symptôme est que lorsque vous essayez de vous connecter à l'émulateur, cela vous indiquerait que les connexions expiré notre refus. Donc, si vous ressentez ces symptômes, vous devez absolument aller de l'avant et respecter ces mises à jour. Cela dit, c'est vraiment tout pour les liaisons d'entrée et de sortie. Je vous encourage donc à explorer, créer d'autres fonctions que vous jugez utiles. Fonction déclenchée par minuterie qui enverrait un e-mail tous les matins ou chaque semaine, ce genre de choses. Alors allez-y et explorez. 21. Fonctions et motifs d'orchestration durables: Bienvenue les gars de retour. Dans cette leçon, nous allons parler orchestration durable ou de fonctions. Il s'agit donc d'un autre type de fonction disponible dans une fonction 0. Nous pouvons facilement le faire tourner à l'aide du gabarit et nous allons le regarder. Mais avant d'y arriver, je veux juste passer par là. Une écriture sur sa documentation Microsoft pour Durable Functions, forme durable de pierres, C'est une extension d'Azure Functions. Et il utilise essentiellement le modèle de l'orchestrateur pour suivre les choses. Donc, juste pour le contexte, je forme durable montrée est celle que vous pouvez utiliser les workflows de définition à l'aide du code procédural. Donc, notre flux est généralement que vous voulez faire cela, puis que vous pourriez avoir besoin lundi pendant que l'intervention entre R-naught. Mais le fait est que vous ne voulez pas passer à la troisième étape à moins que les étapes 12 aient été terminées avec succès. Ainsi, une fonction durable va réellement contrôler l'état de l'opération afin qu'elle sache quelle décision prendre à chaque point de référence. Ils sont également capables d'appeler d'autres fonctions ou autres fonctions durables de manière synchrone et asynchrone. Et la sortie est stockée de manière fiable dans des variables locales. Notre histoire en tant que fonctions est durable et fiable et elles sont essentiellement points de contrôle chaque fois qu' elles exercent une fonction, un poids ou un rendement. Ainsi, chaque fois qu'une fonction est appelée et qu'elle renvoie sa valeur, elle crée un tel point afin qu' elle sache exactement où elle se trouve dans l'opération et que l' état n'est jamais perdu. Il est toujours là. Il garde toujours une trace de ce qui se passe et de l'endroit où il se trouve dans le processus. Ils peuvent durer longtemps, ils peuvent durer des secondes, jours, des mois sans fin. Vous avez donc différents modèles dans lesquels vous pouvez appeler une API de manière asynchrone encore et encore. Vous êtes peut-être en train d'extraire une source de données pour quelque chose et vous vouliez continuer à le faire. La partie la plus importante de cela est la recherche de camions de l'État. Et cela vous permet toujours de savoir où vous vous trouvez dans l'opération. Si vous voulez une meilleure compréhension, moins avec la théorie, vous pouvez lire le document est et plus encore. Et vous pouvez voir certains exemples de code dans les différentes langues. Mais nous allons le faire ensemble et nous utiliserons Visual Studio Code et un modèle C-Sharp. Bien sûr, nous passons à Visual Studio Code. J'ai déjà créé un dossier, un 0 fonctions durables. C'est ce que j'ai appelé ça. Non, nous avons sauté sur la languette Azure et sur la section Océans en mousse. Nous allons créer une nouvelle fonction. Nous arrivons donc à notre sorcier habituel. Moi, il suffit de zoomer pour que nous puissions voir clairement, je vais choisir mon dossier et ensuite je choisirai ma langue. Alors, je veux notre propre temps. ai donc six installés. Bien sûr, vous choisissez l' exécution en fonction de votre contexte et, bien sûr la version serait relative à cette version quatre objectifs avec dotnet six. Et puis je veux que vous puissiez facilement former des shunts les découvertes. Vous pouvez toujours commencer taper et il va le filtrer. Je voulais donc des fonctions durables, de l'orchestration. Et je laisserai le nom par défaut pour l' noms non et par défaut. Ensuite, ils ont voulu savoir quel compte de stockage je vais utiliser l'émulateur local et lui permettre générer un projet avec celui-ci créé et nous avons notre nouveau fichier de code. Je vais juste faire un zoom arrière pour que nous connaissions déjà à quoi ressemble le projet. Si je regarde dans le fichier du projet CS, vous voyez ici que j'ai cette bibliothèque particulière qui est très importante pour nos opérations durables. Donc, si vous utilisiez Visual Studio, vérifiez simplement que ce package est référencé. Si ce n'est pas le cas, vous pouvez aller le chercher sur de nouvelles portes avant de créer le modèle de fonction durable. C'est très bien. Mais quand nous aurons notre fichier de code, le week-end, il suffit regarder jusqu'au bout et de faire un test. Je ne vais pas trop le modifier ou quoi que ce soit. Nous voulions simplement comprendre ce qui se passe exactement ici. Nous avons donc l'annotation qui nous indique le nom fonctionnel. Ce nom de fonction a, désolé, cette fonction a une fonction appelée Ron orchestrator qui renvoie la liste des chaînes. Et puis il passe dans un déclencheur d'orchestration. Et vous pouvez voir ici que le contexte est de type que j'ai attrapé dans un contexte d' orchestration durable. Il suit donc toutes les sorties. Et ensuite, il va dire chaque sortie, la valeur glanée par l'appel de cette fonction avec cette valeur transmise. Donc, vous voyez ici, ce n'est qu'une seule fonction qu' il possède réellement et c'est les fonctions durables, orchestration, le C-sharp One sur la partition. Bonjour. Il ne s'agit que d'une seule fonction définie ici. Mais imaginez que si nous ajoutons plusieurs fonctions que vous vouliez appeler l' une après l'autre, vous pourriez simplement les définir dans cet ordre spécifique. Donc ici, c'est dire appeler la fonction par ce nom et lui donner cette valeur. Cette valeur va se lier. Voici notre fonction qui appelle. Et même si le nom est ici, la définition de la fonction s' appelle SayHello. Ensuite, il faut un déclencheur d' activité. Ce déclencheur d'activité est donc peu près le paramètre qui va se désosser. Vous pouvez travailler du bois comme une reliure d'entrée. C'est peut-être quelque chose pour notre Cosmos DB ou quelque chose d'autre, vous savez, quoi que ce soit. Nous avons traversé nos fixations d'allée. Nous avons donc une idée de la façon dont cela pourrait fonctionner. Mais une fois que vous avez fait cela, une fois que vous transmettez cette valeur, vous effectuez l'opération en fonction de la valeur qui est entrée et faites n'importe quoi. Donc ici, il ne fera que dire bonjour à chacune de ces langues, chacune de ces villes, désolé. Il va juste revenir bonjour avec ce volume. C'est tout ce que ça fait vraiment. Non. La dernière fonction que vous obtenez ici est déclenchée via un déclencheur HTTP. Nous connaissons donc déjà les fonctions déclenchées par HTTP. Cela signifie que lorsque nous l'appelons, lorsque nous appelons cette fonction durable et toute cette opération durable via ce déclencheur HTTP, j'ai remarqué que votre client de livre appelle le client d' orchestration durable et vous l'appelez Starter. Ensuite, il va commencer l'opération sur stocké à l'ID d'instance. Et tout ce qui est en train de faire, commencer une nouvelle fonction asynchrone de la fonction durable, ce que nous avons regardé en premier. Le déclencheur Http va déclencher la fonction durable. Et la fonction durable a ses opérations décrites, déclencher cela. Beaucoup de phonéticiens dans cet ordre ont stocké leurs sorties et font un gros retour. À la fin de tout cela, il va se connecter et voir commencer avec l'ID d'instance. L'ID d'incidence espère donc une fois de plus que c'est un camion que cette opération est en cours ou qu'elle soit terminée ou autre. Et vous pouvez l'utiliser dans vos journaux à des fins d'analyse. Et puis, à la fin de tout cela déclencheurs vont voir réponse effrayée et donner un statut, l'ID de l'instance. Donc, l'identification de l'incidence serait une fois de plus l'incidence de ce livre qui se produit de la castration ? Et puis il vérifie la réponse d'état pour voir si c'est fini ? Est-ce qu'on va bien, peu importe. Donc, comme je l'ai dit, il stocke l'état de mon explication, voyons cela en action. Je vais donc exécuter cette fonction et je suis allé au débogage quand même. Très bien, c'est sur ceux qui sont en cours d'exécution. Vous allez voir ici dans les journaux qu'il détecte qu'il a le démarrage HTTP afin qu'il s'agisse d'une méthode déclenchée par HTTP. Ensuite, nous avons l'itération de l'arc, puis nous avons l'activité. C'est donc ce que nous appellerons la fonction qu'elle appelle. C'est une fonction d'activité. Et c'est l'histoire de l'art. C'est un film. Il s'agit d'une simple mousse déclenchée par HTTP montrée. Donc, lorsque je passe cet appel, HTTP démarre et je suis prêt à contrôler le clic, clic de contrôle l' aurait bien sûr lancé dans le navigateur. Donc mon navigateur lance, il a appelé URL et nous savons ce qui se passe lorsque vous l'appelez l'URL d'une fonction déclenchée HTTP. Et c'est allé de l'avant et a commencé les frais de scolarité les plus sombres, n'est-ce pas ? Donc, celui-ci a été appelé, mais les API de l'hôte. Et puis vous voyez ici où il dit bonjour a été appelé avec succès et il est retourné bonjour Tokyo, bonjour Seattle et bonjour Londres. C'est la preuve qu'il a été appelé avec succès. Mais regardez cela aussi. Laissez-moi voir si je peux zoomer un peu pour que nous puissions mieux voir ces journaux. Vous remarquerez que chaque fois qu'il aurait passé cet appel avec succès, il remonte directement à cette fonction ou histoire de l' art. Il appelle, il exécute l'activité. Nous obtenons ensuite le résultat de l'activité. Ensuite, il nous indique qu'il a exécuté l'activité. Ensuite, il revient directement à la friandise d'Arcbest ou chaque fois qu'il passe un appel téléphonique, il reprend le contrôle à l'orchestrateur. Et bien sûr, c'est vous qui travaillez sur le flux de travail. Vous mettez donc dans votre logique votre journalisation et vos décisions fonction de la sortie , du succès ou de l'absence de leur absence. Désactivez la fonction durable, appelez l'activité. C'est un trou. Vous pouvez l'utiliser à votre avantage. Lorsque vous avez appelé une fonction déclenchée HTTP ou une URL de point, vous remarquerez que vous obtenez ce bloc de JSON. Alors utilisez-vous le facteur ou utilisez le navigateur ? Cela n'a pas vraiment d'importance, mais ce que vous obtenez, c'est une requête d'état obtient une valeur URI, qui a un URI qui nous donnera l' état actuel de l'histoire de l'art. Tout ça. Est-ce que cet URI est allé le copier et me laisser juste le placer dans un nouvel onglet. Et vous voyez ici qu'il indique le nom, nous obtenons le nom de celui-ci, nous obtenons l'ID de l'instance. C'est sûr. Nous obtenons la pile d'exécution. Le changement de dossier est donc terminé. Donc, à n'importe quel moment au milieu de celle-ci, si vous voulez voir quel est le statut de cette fonction durable, est-ce encore fait ? Cela est toujours en cours, alors vous pourriez simplement voir, me donner ce statut. C'est à peu près tout cela pour des fonctions durables. Bien sûr, c'est un exemple très simple, mais j'espère que vous voyez les possibilités et la façon dont vous pourriez réellement utiliser ce type de flux de travail pour des opérations plus complexes où vous en avez besoin camion. Est-ce que c'est déjà fait ? Quel est le statut au milieu ? Et prenez des décisions en fonction de toutes les opérations qui se déroulent dans une autre. 22. Créer de l'API REST sans serveur avec les fonctions Azure: Hé les gars, dans cette section, nous allons parler de choses amusantes. Nous avons donc examiné beaucoup de théorie, beaucoup de concepts et nous avons simplement appris à comprendre le fonctionnement interne d'une fonction 0. Dans cette section, cependant, nous allons mettre tout ce que nous avons appris, le test et nous allons créer une API Rest. Nous allons donc simplement utiliser des fonctions pour construire d'anciens points de terminaison. Si vous n'êtes pas familier avec les API Rest, vous pouvez faire le tour de mes autres cours sur le développement d' API Rest, où nous examinons comment les créer à l'aide d'un modèle de projet de développement EPA complet à partir de Le bateau Visual Studio ici, nous allons utiliser Azure Functions. Dans cette vidéo. Commençons tout simplement. Nous allons utiliser Visual Studio pour celui-ci. Trouvons simplement les zones de mousse d'Asor. Encore une fois, si vous ne l'avez pas à gauche, vous pouvez toujours effectuer une recherche. Et si vous ne l'avez pas du tout, vous devrez aller chercher le programme d'installation et installer la charge de travail Azure. Obtenons Azure Functions. Et celui-là que je vais appeler, je vais appeler ça une liste de panier. Je pense que c'est un exemple assez simple. Nous avons des articles dans le panier Linda et nous les retirons quand nous les avons. Nous pouvons simplement aller de l'avant et créer cela. Et pour l'instant, je vais créer un modèle vide pour l'émulateur de stockage. Oui, nous voulions utiliser un émulateur de stockage. Nous y sommes déjà allés. Cela fonctionne. Et juste pour le contexte, ce point, les zéros, le stockage Azure traditionnel, Emily m'a dit et ne fonctionne pas nécessairement correctement. Et j'aurais dit que vous auriez dû utiliser l'azi, n'est-ce pas. Donc, pour vous assurer qu'une fois que vous l'avez installé, vous pouvez toujours exécuter cette commande azurite, puis vous verrez qu'elle démarre tous les services. Donc, si vous rencontrez des difficultés pour vous connecter à votre tendance pour utiliser ces services émulés et que l'envoyer ne peut pas se connecter, exécutez simplement cette commande azi, n'est-ce pas ? Très bien. Je vais juste avoir ça en arrière-plan. Étranger. Oh, laissez-moi aller de l'avant et créer ce modèle vide. Quand nous reviendrons, nous allons commencer avec la création ou les fonctions et regarder le concept de couloir va le mettre en termes de construction de notre structure de type API de repos. 23. Configurer des itinéraires API: Très bien, alors commençons ça. Je vais ajouter une fonction, donc une nouvelle fonction Azure. Et comme nous avons affaire à une structure semblable à une API , toutes mes fonctions doivent être déclenchées par HTTP. Je vais appeler cette fonction de panier ou API de panier d'achat. Appelons ça ainsi et ajoutons. Ensuite, je vais utiliser le déclencheur HTTP. Je suis allé le rendre anonyme au moins pour l'instant. Et cliquez sur Ajouter. Très bien, donc nulle part plus fonctionnel, pas quand commencer à modifier pour l'instant. Au lieu de cela, je vais aller l'avant et ajouter d'autres choses. Je vais donc ajouter un nouveau dossier, je vais appeler ça des modèles. Le problème avec le développement d'API, c'est que vous ne le ferez généralement pas. Les modèles sont des détails qui régissent les données en watts avec lesquelles vous exposez une interruption de barre oblique pour chaque demande. Je vais d'abord avoir un modèle de panier d'achat. Et je suis allé rencontrer ce moyen interne, interne, qu'il peut être utilisé par n'importe quoi dans le même projet afin que je puisse le laisser comme interne ou non. Et je vais ajouter quelques propriétés. Je suis allé de l'avant et j'ai fait les trois clauses et vous pouvez simplement les regarder et les reproduire en conséquence. Nous avons donc l'article du panier ou un panier d'achat en général. En fait, il devrait s'agir d'un article de panier d'achat. Permettez-moi de mettre à jour le nom du fichier en conséquence. Laissez-moi simplement faire que l'article du panier a un ID que je vais utiliser comme GUID de chaîne. J'ai créé un acte, puis j'ai le nom de l'article, puis j'ai collecté ou non, vous savez quoi, comme sur notre liste de courses, supprimer l'article une fois que vous l'avez mis dans le panier. C'est à peu près ce que c'est. Signalisation. Ensuite, nous en avons un pour décret. Bien sûr, pour la création. Je ne suis pas prêt à tout exposer. Je ne veux pas que l'utilisateur soit en charge de l' ID ou qu'il le crée. Et booléens par défaut, par défaut. Nous ne manquons donc pas de spécifier ce qui en a besoin de la part de l'utilisateur. Je suppose qu'il n'est pas encore collecté. Tout ce dont nous avons besoin, c'est le nom de l'article. Pour la mise à jour. Il se peut que vous modifiiez le nom de l'article. Vous pouvez aussi simplement changer collecté ou je pourrais simplement les télécharger pour voir oui, il est collecté ou non. Je pense donc que je vais rester aussi simple et travailler avec cela simple et travailler avec plus tard lorsque nous nous connecterons à la base de données, alors nous devrons créer d'autres modèles. Mais pour le nœud, c'est tout ce dont nous avons besoin. Une API Rest. Ce serait ce que vous appelez détails ou des objets de transfert de données. Une fois de plus, si ces termes sont familiers avec eux, vous pouvez toujours consulter mon cours sur le développement d'API. Cependant, il a repris notre fonction. Alors, ce que nous allons faire ici c'est en fait établir ou s'enraciner. Le problème avec les fonctions, c'est que par défaut, nous obtenons cette classe, oui, et ensuite nous obtenons une fonction avec R1. Dans ce cas, c'est dire que vous pouvez le faire, vous pouvez faire de la publication. Nous n'avons vraiment besoin de rien pour faire les deux car dans notre API de repos assis, cela devrait être très strict. L'un pour poster un oublie déjà vu au niveau très élémentaire. Mais chaque fonction devrait être en charge d'une opération à ce moment-là. Donc, puisque nous imitons cette structure et cette norme de l'API Rest, nous avons décidé de modifier cela. Ce que je peux faire, c'est renommer la fonction. Donc, si cela est censé obtenir des articles de panier d'achat, je peux appeler cela des articles de panier d'achat. Très bien, c'est le nom de la fonction. Cependant, la route, je veux spécifier une valeur parce que je ne veux pas lorsque vous appelez la fonction, vous devez dire barre oblique de nom de fonction, puis cette fonction dans une nouvelle fois reste normes API vous demanderaient d'appeler cela un EPI, une seule structure. Mais en fonction de votre verbe sur les paramètres potentiels, les valeurs étant possibles à ce moment-là, il ne saurait pas exactement à quelle fonction vous faites référence. Nous allons donc renommer cet itinéraire pour qu'il ressemble un peu plus à ce à quoi ressemblerait notre API de repos. Je vais appeler ça des articles de panier d'achat. Donc, ce que vous attendez car il va déjà s' agir de la barre oblique d'URL, de la barre oblique de l' API, puis du nom de la fonction. Mais quand je spécifie cela en tant que root, il ne saurait pas qu' à partir de la requête HTTP, tout ce qui va dans cette racine après l'API barre oblique ira à cette fonction, n'est-ce pas ? La prochaine chose est que je ne veux pas que cette fonction soit publiée. Je voulais récupérer certains sont allés supprimer ce post. Et juste pour m'assurer que tout semble bien, je vais également renommer la fonction elle-même pour refléter nom de cette fonction afin que je vais également renommer la fonction elle-même pour refléter le nom de cette fonction afin que tout semble uniforme. Pour null, je vais supprimer tout ça. Je peux simplement supprimer tout cela de la fonction parce que ce que nous allons faire nécessite tout cela par c. C'est celui à obtenir. Non. Encore une fois, nous réalisons notre API RISD, ce qui signifie que j'en ai besoin pour en créer une. Donc je vais juste copier tout ça et je suis allé appeler celui-là Create Shopping Guard que j'essaie, nous devons donner ce nom à la méthode. Et celui-là va être le poste parce qu'il n'y aura pas cette fois-ci. C'est créer une création de moi entière. Vous devez utiliser post et ensuite il a la même racine. Il va donc s'agir d'une demande postérieure à cet EPA ou à cette route HTTP. Celui-ci est demandé que HTTP racine. Nous pouvons faire la même chose pour PUT et supprimer. Put serait pour la mise à jour, la suppression. Rien d' explicite. Panier de nourriture que j'assiste. Ou permettez-moi simplement de m' assurer que mes méthodes reflètent vraiment ce que va être l'opération. Donc, supprimez le panier, je, euh, Tim, je supprime l'article du panier. Il s'agit d'une demande PUT et celle-ci est une demande de suppression. Très bien, encore une fois, nous ne faisons que cartographier les anciennes racines. Ils peuvent changer au fur et à mesure. Nous pourrions voir quelque chose que nous voulions changer. Bien sûr, nous allons modifier les paramètres lorsque nous nous concentrerons sur chacun d'eux. Mais pour moi, je ne fais que les cartographier pour que nous ayons une idée d'ensemble. Il y a un autre type de get parce que nous en voulons peut-être des données spécifiques. Donc, si nous voulions un article spécifique au panier, il y aura un article de panier d'achat, pas des dizaines. Ce serait également une barre oblique pour la racine serait une barre oblique d'article du panier d'achat. Ensuite, nous allons utiliser un paramètre de liaison pour vous faire savoir qu'ils devraient s'attendre à quelque chose appelé ID. Par la suite. Je vais chercher tous les objets que nous avons. Obtient par pièce d'identité pour trop d' articles de panier d'achat si vous voulez être admissible, dites simplement que vous êtes très clair et que vous savez que c' est à cela qu'il sert. Mais tout ce que c'est, c'est la pièce d'identité. Nous avons le Create, qui n'est qu'un post. Et puis nous avons le nœud PUT et delete que nous avons une bonne idée de l'image d'ensemble. Lorsque nous reviendrons, nous pouvons commencer travailler sur eux un par un. 24. Configurer la fonction HTTP Azure: Très bien, donc nous sommes de retour et nous allons commencer par créer des articles de panier d'achat. Le premier, mettons à jour ou consignons le message. Je vais juste dire créer un article de panier d'achat. Dans la demande, nous avons les données qui arrivent. Nous avons déjà vu que cette demande a bien regardé dans le corps, dans l'URL. Et comme c'est un post, nous nous attendons à ce que les données arrivent dans le corps. Je vais commencer par une variable appelée chaîne demande des données, où nous allons attendre nouvelle instance du lecteur de flux. Et ce lecteur de flux va entrer dans ou HTTP demande le paramètre req dot body. Ensuite, nous voulons lire, lire pour finir plutôt asynchrone. Très bien ? Maintenant que nous l'avons lu, cela va rendre ce corps JSON. peu près, nous voulons le sérialiser dans l'objet de notre panier d'achat. Donc je vais enregistrer l'élément var est égal à, j'utiliserai les convertis JSON. Json converti provient de notre bibliothèque logicielle Newton et elle était déjà incluse. Ici. Il s'agit essentiellement d'une exigence pour les fonctions déclenchées par HTTP. Nous l'avons vu, nous l'avons déjà utilisé. Eh bien, je veux dire que c'est comme si n'importe quelle autre poche n' était qu'un paquet NuGet. Donc, si vous savez déjà comment obtenir des paquets et que vous pouvez simplement accéder à Gérer le package NuGet et l' ajouter ici sans aucun scrupule. Nous voulons que GSM convertisse un objet de désérialisation par points. Nous voulions désérialiser notre objet Créer un panier d'achat. Ensuite, nous lui donnons les données de demande, que nous savons qu'elles sont JSON dans la nature. Ensuite, une fois que nous aurons fait tout cela, nous voudrions modifier une base de données. Notre base de données sera de type article de panier car nous voulons les valeurs par défaut. Avant de faire tout cela, permettez-moi de créer une nouvelle instance. Ok, laissez-moi passer d'un élément à l'autre. Et puis je voulais dire que l'article var ici est égal à une nouvelle instance de l' article du panier d'achat. Panier d'achat. Je me retourne. Ce nouvel article de panier va simplement prendre le nom de l'article, qui provient des données, le nom de l'article du point de données. Une fois que nous aurons cet objet , nous voudrions voir si nous voulions l'enregistrer dans une base de données. Je ne suis pas encore prêt à commencer toute la connexion à la base de données. Donc, ce que je vais faire, c'est simplement utiliser une liste statique, mais j'appelle un article de panier d'achat équivaut à une nouvelle instance. Donc, ici, je vais juste dire un panier d'achat, des articles à point Ajouter, un nouvel article. Maintenant, arrêtons une minute et réfléchissons la pertinence de l'utilisation de cette liste. Ce que les avantages et les inconvénients sont évidemment dans un cadre réel, ne serait pas utiliser une liste comme celle-ci, c'est utiliser une base de données. Cependant, je ne suis pas encore prêt pour la base de données. Nous allons donc utiliser la liste. Maintenant, le problème avec la fonction est un pendant qu'il est en cours d'exécution, il va stocker toutes les données, toutes les variables pendant l'exécution. Donc, pendant que nous testons, c' est parfait car nous pouvons appeler toutes les différentes méthodes et interagir avec la même liste. Un cadre de production. N'oubliez pas que les fonctions peuvent évoluer. Cela signifie que si vous deviez le déployer alors que cela peut fonctionner pour certains scénarios pendant que votre application de fonction est en cours d'exécution. Parce que rappelez-vous que sur certaines plantes, il sera éteint jusqu'à ce que vous deviez le diviser à nouveau. C'est donc un danger, mais pour supposer que cela ne se produise pas, il peut s'adapter à plusieurs instances. Vous vous retrouverez donc avec plusieurs instances de la liste, ce qui constitue un autre danger. Donc, bien sûr, c'est pourquoi nous voudrions prendre en charge une base de données pour null. Nous allons simplement utiliser notre liste. Une fois que nous avons ajouté à la liste, nous pouvons renvoyer les résultats d'un nouvel objet. Et je suis juste allé passer le nouvel élément, toute la liste, mais juste l' élément qui n'a pas été créé. C'est vraiment ça. Toutes nos erreurs concernant notre article Créer un panier d'achat ont disparu. Et c'est la première étape. Donc, quand nous reviendrons, nous irons chez nous. Nous allons juste faire les deux, obtenir un seul objectif, obtenir tout contre obtenir par carte d'identité. 25. Configurer des fonctions de GET HTTP Azure: Très bien les gars, donc nous sommes de retour dans cette leçon, nous allons nous concentrer sur ou obtenir des méthodes. La première méthode, qui consiste à obtenir tous les éléments que l'on est assez simple. Donc, mon message va dire obtenir tous les articles du panier d'achat. Alors, tout ce que nous allons vraiment devoir faire, c'est revenir. Donc, à ce stade, j' irais vraiment interroger la base de données et dire donnez-moi, accord, Dans ce cas, nous n'avons pas vraiment de base de données, nous n'avons que cette liste. Donc tout ce que je vais faire, c'est revenir, ok, le résultat de l'objet avec la liste. C'est la liste des articles du panier d'achat. Et une fois que vous le voulez, tous, vous arrivez à tous. C'est à peu près tout ça. J'ai une erreur ici. Désolé, j'ai raté mon nouveau retour, nouveau bon, les résultats des objets. On y va. C'est vraiment ça. Pour la carte d'identité. C'est un peu, il faut un peu plus fini, non ? Donc oui, nous avons la même règle. Nous savons que celui-ci s'attend à ce qu'une valeur d'identification apparaisse. Ainsi, cette valeur d'ID apparaît généralement sous forme de paramètre. Dans une requête HTTP. Il aurait pu entrer en tant que paramètre ou HTTP. Je vais ajouter un nouveau paramètre ici en tant qu' ID de flux de valeurs. Ensuite, j'utiliserai simplement l'ID de chaîne de virgule représente la valeur d'ID qui doit être transmise lorsque cet appel de fonction est effectué. Je vais vraiment dire que c'est la dernière chose. Je le mettrai après l'ID du flux de l' enregistreur. Une fois cette méthode appelée, nous attendons cet ID. Maintenant, une fois que nous aurons cet identifiant, et je vais juste réécrire le message de l'enregistreur obtenir un article de panier avec un identifiant. Et puis je vais simplement encapsuler la valeur d'id qui est transmise. Désolé, en interpolation, pour encapsuler, sachez que j'ai ça. Je vais dire que l'article du panier d'achat var est égal à, je vais aller à la liste des articles de mon panier d'achat. Ensuite, je vais voir des points que nous pourrions utiliser pour trouver. Mais je vais m'en tenir à ce que je suis plus à l'aise avec premier ou par défaut parce que je veux faire en premier ou par défaut. S'il ne le trouve pas, il reviendra avec une valeur nulle. Commencez par étoile par défaut, puis contrôlez les points pour utiliser le lien system.in. Ensuite, nous avons mis notre expression Lambda. Par conséquent, un identifiant de point du panier, l'article du panier sera égal à la valeur d'id qui est transmise. Et puis, une fois que nous avons fait cela, je suis allé vérifier. Je vois que Visual Studio m'aide. Si l'article du panier est nul, qui signifie que bien qu'il n'ait manifestement rien renvoyé, nous devrions renvoyer un nouveau résultat d'objet non téléphoné. C'est donc un 404. Sinon. Sinon. Ok, voici donc une différence entre, car vous remarquerez peut-être que vous avez résultats d'objets par rapport à des résultats. Voyons les anciens résultats clés différents des résultats de l'ancien objet clé. La différence est que lorsque vous revenez aux résultats de l'objet, vous devez entrer des données lorsque vous ne retournez pas de détails. Donc, dans ce cas, je n' ai aucune donnée pour revenir à sa valeur attendue. Je dois dire que les résultats n'ont pas été téléphonés. Ils voulaient donc vraiment le voir penser que c'est vraiment les mêmes quatre sur quatre, mais juste lequel utiliser quand il y a lieu. Nous allons renvoyer un résultat introuvable. Sinon, nous retournerons les résultats d'un nouvel objet avec cet article particulier du panier en main afin que la couleur ait obtenu le détail. Examinons rapidement pour obtenir plusieurs articles, obtenir le panier d'achat que j'essaie, tout ce que je fais est de manquer de devis de requête sans devis, d' exécuter une requête contre le magasin de données et renvoyer tous savoir ce qu' une banque de données est au moins. Je ne fais que retourner ce qu'il y a dans cette liste. Lorsque nous voulons par ID, je dois spécifier que je veux l'ID du paramètre soit emprisonné. Ils sont déjà tous les deux, nous connaissons déjà les racines de ce que c'est, slash IID, d'où mon besoin de l'ID. Et puis une fois que j'ai cette idée rondo query pour trouver cet objet dans la banque de données. Si je ne le trouve pas, je ne retourne pas les résultats suivants. Sinon, je renvoie les résultats de l' ancien objet clé. C'est vraiment tout pour les méthodes get off de notre API Rest. 26. Configurer la fonction Azure PUT (mise à jour: Très bien, les gars. Passons donc à notre PUT que nous envisageons de mettre à jour ou d'acheter un article de panier. Non. Nous devons apporter d'autres modifications car lorsque nous voulons mettre à jour, nous devrions transmettre un ID ainsi que les données à mettre à jour, n'est-ce pas ? Nous sommes donc allés faire ce que nous avons fait ici, c' est-à-dire inclure ID, ID paramètre. On y va. Et nous devons mettre à jour nos racines car nous avons également besoin cet identifiant à la fin des racines de mise à jour. Ensuite, nous pouvons envoyer un message de journal de la barre GnG, mettant à jour l'article du panier avec ID. C'est là. Non, nous devons faire une sorte d'opération hybride. La première chose que nous devons trouver les données pour pouvoir répéter ce que nous avons fait dans Git. Je vais simplement aller de l'avant et voir me procurer cet article de panier dont l' identifiant a été transmis en tant que paramètre. Si nous ne l'avons pas trouvé, ne revenez pas par téléphone. Très bien. Ensuite, nous allons devoir répéter quelque chose comme ce que nous avons fait avec la création. Certains sont partis analyser les données entrantes. Il s'agirait d'analyser l'article de mise à jour du panier d'achat. Ensuite, dans une opération plus importante, nous pourrions utiliser quelque chose comme ultime bird pour cartographier les données entrantes et l'article du panier pour effectuer les mises à jour. Mais c'est une opération très simple. Donc, ce que je vais faire, c'est simplement mettre à jour l'article du panier d'achat, drapeau des points collectés, et laisser être égal au flux de données collectées. Vous êtes donc en train de le mettre à jour. Cela doit signifier que vous changez le booléen de vrai à faux ou vice versa. C'est tout ce que nous allons vraiment mettre à jour. Ensuite, à la fin de tout cela, nous allons juste renvoyer les résultats des objets. Et je retournerai simplement l'article du panier mis à jour. L'objet qui est vraiment tout ce qu'il y a à la mise à jour. Revoyons ça parce que j'ai pris du code de différentes pièces. Laissez-moi juste expliquer ce que nous faisons. Premièrement, nous trouvons l'article du panier avec l' ID correspondant qui a été transmis via le paramètre. Ensuite, nous allons dire que si rien n'a été trouvé, nous retournons un 404. Sinon, il continuera de me voir obtenir les données qui sont entrées dans la demande car avec un put, les données seraient dans le corps. C'est très similaire à ce qu'il serait dans le corps du poste. Donnez-moi les données du corps, le piratage s'incline dans le modèle correspondant pour la mise à jour. Ensuite, nous allons procéder à une mise à jour manuelle. Je le fais donc manuellement dans une opération plus importante, comme je l'ai dit, vous utiliseriez probablement une bibliothèque automatique ou une autre bibliothèque tierce, ou une autre bibliothèque tierce ou pour convertir ou faire cela pour deux opérations très simples sont des opérations très simples, donc nous allons simplement le faire. Ensuite, nous retournons l'objet mis à jour le cadre des résultats de retour. C'est vraiment tout pour la mise en place du PUT. Lorsque nous reviendrons, nous ferons notre dernier, c' est-à-dire la suppression. 27. Configurer la fonction de Azure HTTP: Très bien, commençons par l'opération de suppression. Je pense donc que nous le faisons depuis assez longtemps. Si vous voulez appuyer sur Pause et essayer de le faire vous-même, je vous encouragerais. Sinon, nous pouvons simplement le parcourir . J'ai déjà écrit le code. Nous avions déjà défini la méthode de suppression de l'article dans le panier d'achat. Ce que nous n'avons pas fait était officiel de s'enraciner. Ainsi, une fois de plus, la racine aura besoin d'une valeur d'ID. Et nous avons l'ID de chaîne de paramètre correspondant mis à jour le message du journal. Et encore une fois, nous avons essayé de le trouver. Si ce n'est pas le cas, nous disons que les résultats n'ont pas été trouvés. Toutefois, si nous continuons, nous disons le supprimer de la liste du panier , puis renvoyer un ancien résultat clé. Remarque : pas correct, résultats de l'objet, tous les deux OK, résultat puisqu'il n'y a pas de données à renvoyer. Et c'est vraiment ça pour la méthode delete, n'est-ce pas ? Ainsi, si nous faisons simplement Control Shift et B, nous pouvons construire et nous assurer que nous n' avons aucune erreur dans notre code. Nous pouvons voir que nous avons réussi les erreurs de build 0 et que nous pouvons continuer. Maintenant que nous avons terminé nos quatre opérations, quand nous reviendrons, nous allons passer quelques tests. Nous utilisons Postman pour appeler les différents points de terminaison et nous assurer qu' ils fonctionnent ou que nos fonctions fonctionnent comme prévu. 28. Testez les fonctions d'azur avec PostMan: Très bien, donc c'est l'heure des tests. Nous avons fait tout le travail acharné. Mettons-le à l' épreuve pour que nous puissions simplement cliquer sur le bouton Démarrer ici dans Visual Studio pour commencer à parler. Ou si vous utilisez Visual Studio Code à l'heure actuelle, vous savez comment l'exécuter. Ensuite, dans notre console, qui accompagne l'exécution, nous obtenons une liste de toutes les fonctions, de sorte que nous les voyons toutes par leur nom, grâce à l' attribut name de la fonction que nous avons ajouté. Mais nous remarquons également que chacun a une racine. Oui, les règles auraient été basées sur le nom fourni par défaut. Cependant, nous l'avons outrepassé et nous allons mettre nos propres racines. Et là, vous pouvez voir comment appeler chaque méthode en fonction de l'itinéraire. Si nous testons avec le facteur ou tout autre outil de test HTTP, et je dis, ok, appelez les méthodes get all. Notez pour obtenir tous les articles du panier, je vais simplement appeler cette URL afin que vous puissiez simplement la mettre en surbrillance , puis le copier et le coller dans Postman cliquez sur Exécuter. Et puis vous verriez ici que vous obtiendriez ce genre de choses, ces 200, d'accord. Mais rien parce que nous n'avons pas mis de données. Bien sûr, vous verrez également que le journal est mis à jour. Donc, obtenir tout le panier que j'essaie. Et puis il a été exécuté. À ce moment-là. Essayons de créer un nouveau panier d'achat. Donc je changerais simplement cette méthode pour poster. Et puis dans le corps après m'assurer que j'envoie un JSON, donc les changements jusqu'à RA et ensuite James F à G sont allumés. Et qu'avons-nous précisé ? Pour créer ? Nous acceptons uniquement le nom de l'article. Je vais donc voir le nom de l'objet puis les deux-points. Et n'oubliez pas de mettre entre guillemets, puis deux-points, et ce serait juste de Postman. Donc, quand je clique sur Envoyer, voyons. Ensuite, il répond avec l'IID nouvellement créé, cet horodatage, le nom de l'élément, et s'il est collecté, c'est faux. Si je réessaie mon ghetto d'origine, il suffit d'ouvrir un nouvel onglet, utilise la même chose que vos balles utilisaient un get et que j'envoie. Ensuite, je vois que je reçois de l' argent sur cet article de la liste. Si j'essaie mon autre, celui-ci nécessite la pièce d'identité. Je suis donc allé voir une barre oblique, puis passer cette valeur d'ID, la copier, la coller là, puis je ne devrais récupérer qu' un seul objet. On y va. Je pense que cela fonctionne bien, laissez-moi essayer la mise à jour. Je ne fais que créer des baignoires en conséquence. Donc encore une fois, nous avons cette URL, collez là, ou en fait, j' aurais dû utiliser cette URL pour les mises à jour. Nous avons besoin de cette valeur d'identification, pour faire une mise. Et puis à l'intérieur du JSON brut du corps de la requête, je vais voir que collecté n'est pas un vrai deux-points et la valeur vraie. Laissez-moi envoyer, vous voyez ici ça revient, ils seront un objet chauffé Latina sachant que ce n'est pas vrai. Donc, si je retourne au cadeau, reçois tout renvoi, alors je reprends la mise à jour. Comme je l'ai dit, si vous appelez ces fonctions au cours de la même session, je suis allé l'appeler une session. Donc, nous sommes en train d'exécuter, non ? Non, nous appelons l'un après l'autre, l'un après l'autre. Il met à jour la même liste à chaque fois. C'est pourquoi vous obtenez ces résultats. Bien sûr, si nous nous arrêtons et redémarrons, cette liste sera vidée. C'est donc la même chose qu'une mousse apparue une fois qu'elle est en cours d'exécution. Si vous utilisez cette liste, aucun problème. Une fois que les compétences informatiques terminées, puis en tant que sauvegarde du vent par la suite, vous savez simplement que vous allez perdre ces données. Vous n'avez donc pas à faire attention à cela. Mais plus tard, encore une fois, nous allons envisager utiliser un stockage persistant sous la forme d' un 0 tables n'importe quel autre support de stockage que vous préférez. C'est vraiment ça. Le dernier que je vais faire est que je supprime. Je vais donc utiliser cette URL ici. Et cette fois, le type de méthode est supprimé. Nous avons la carte d'identité et tout. Je n'ai pas besoin que le corps du sujet réponde à 100 ans et à tout le contenu. Si je reviens en arrière et que j' essaie d'exécuter une requête et que rien ne revient, si je recrée, j'obtiens un nouvel identifiant. Et puis, si j'essayais de regarder à nouveau là dedans, je vois tout. C'est littéralement tout ce qu'il y a, citez sans citer tout ce qu'il y a à notre API de repos. Plus cela devient difficile en fonction des puces des besoins de votre entreprise à la fin de la journée, c'est à quel point il est facile de créer une API de repos complète en utilisant uniquement Azure Functions. 29. Les fonctions de test avec l'interface utilisateur: Le développement est désormais un élément fondamental de toute API, est la façon dont elle interagit avec les applications clientes. Cela peut être une application mobile, il peut s'agir d'un web up, etc. Dans ce cas, j'ai fait une simple lame où le code réglé pour interagir avec les différents points de terminaison de notre API de fonctions z sont. Pendant que je l'exécute. Nous savons que nous avons déjà toutes les racines. Tout ce que j'ai fait, c'est de modifier la page de données Fitch à partir du modèle typique de blazer up. Et ce qu'il fait, c'est tester à partir du laser quand ils vous mettent dans un élément ici et disent Créer, cela mettra à jour parfois ce qui se passe, c'est que lorsque vous interromprez avec la console ici, cela provoquera positif. Il suffit d'appuyer sur Entrée, il va continuer. Vous voyez ici que l'appel a effectivement fait créer un article de panier d'achat. Et ensuite, il faut le récupérer. Et il y a notre nouvel article de panier d'achat. Si je dis un test de Blazer One, et laissez-moi simplement m'assurer que la console sait qu' il devrait fonctionner normalement lorsque je clique sur Créer des mises à jour et qu' il est bas dans la liste. Si je clique sur la coche pour collecté, vous voyez ici qu'il appellera le port. On y va. Alors dis-le, mis à jour. Et puis, si je retire, encore une fois, je continue à interagir avec ses pauses. Lorsque je clique sur Supprimer, il doit supprimer l'élément. Laissez-moi essayer encore une fois. On y va. Laissez-moi donc en créer quelques autres, puis laissez-moi les supprimer. Chaque fois que je clique sur Supprimer, vous verrez qu'il met à jour l'interface. Je vais juste vous guider dans le code que j'ai écrit pour cela. Ce n'est pas vraiment un cours de blazer. En fin de compte, je n'enseignerai pas la bizarrerie d'autres cours pour cela. Mais dans le contexte, je vais vous montrer que du point de vue blazer, il ne sait pas quelle l'infrastructure sous-jacente de cette API Rest. Ça va juste faire, y a-t-il des choses relatives à notre API de repos ? J'ai créé un tout nouveau projet et c'était juste un assemblage Web plus agréable. Des moyens simples de le faire. Il vous suffit d'accéder à la solution, puis cliquez avec le bouton droit sur Ajouter un nouveau projet. Vous cherchez le blazer WebAssembly up. J'utilise dotnet cherche à aller de l'avant et à le créer. Et puis par défaut, vous allez obtenir une adresse ici, BCE adresse avec l'écologiste qu'on lui dit d'être l'adresse de base d' où je sais que nos fonctions seront diffusées. Très bien, nous savons donc que c'est le port. Nous aurions fait des tests avec Postman. Nous savons que c'est notre API standard écrite, d'accord ? C'est donc l'adresse de base du client HTTP utilisé selon nos croyances qui est en hausse. Une autre chose que je voulais souligner c'est que nous avons dû mettre en place des noyaux. Cores est une référence d'origine croisée. D'accord, je suis désolé. Voici la définition. Partage de ressources entre origines. On y va. Il s'agit d' un protocole ou d'ensembles de règles qui régissent votre API interagit avec des ressources qui ne se trouvent pas sur le même serveur. Pendant que nous exécutions l' application de fonction , anticiper avec post-argent n'a pas vu notre problème. Cependant, lorsque je diffuse, envoie une demande à partir d'une source externe indiquant que ces lames sont en cours d'exécution, qu'elles s'exécutent sur un autre port. Par conséquent, elle est considérée comme une application complètement différente, alors elle la rejetterait. C'est donc tout ce que nous activons CORS sur Azure Functions dans notre fichier JSON local de paramètres de points. Nous allons à l'hôte et nous ouvrons un nouveau bloc d'objets où nous avons dit que les cœurs étaient des étoiles, ce qui signifie accepter toutes les demandes. Ils n'ont aucune restriction. Bien sûr, lorsque nous le déployons sur Azure, cela sera géré du côté Azure. Mais pour un environnement local, nous devons nous assurer qu'il est en place. Vous pouvez y aller de l'avant et le faire. J'aurais aussi répliqué le dossier des modèles, donc je viens de les refaire, n'entends pas dans les lames sont en place. Et au lieu de cela, j'ai mis à jour l' espace de noms dans le panier, au moins les modèles de points blazer car le nom de l'application est panier, au moins dot blazer. Vous aurez accès aux modèles ou aux modules. Une autre chose que j' aurais fait serait de mettre à jour, bien sûr, le Data Dot Racer Fitch. Ou si vous vouliez obtenir un nouveau pH, c'est à vous de choisir. Mais j'ai tout fait sur une seule page et je vais juste vous expliquer le code qui a été écrit. Le titre de la page, nous avons les balises h1 et p. C'est juste de la sémantique. Vous n'êtes pas obligé de le faire. Ensuite, j'ai le formulaire d'édition de haut où j' ai ce texte d'entrée que je lie à un objet appelé création d'élément et accepte le nom de l'élément. Par conséquent, dans le formulaire de modification, le modèle est Item Create et lors d'une soumission valide, nous appellerons la méthode Handler create. Ensuite, j'ai ce bouton de soumission pour mon formulaire de modification. La création d'un article est souvent un article de panier d'achat. Et j'ai juste un exemple de cela et j'ai géré la création. Il va juste voir la réponse toujours le client HTTP. Qu'est-ce que HTTP qui dit client HTTP que j' injecte dans mon composant ? Donc cela aurait déjà été là parce que je vais récupérer des données est en fait assemblé sur la façon dont vous pouvez interagir avec client HTTP afin que vous n' ayez pas à mettre ça là. Il devrait déjà être là. Mais ce que je fais dans la création de la poignée, c'est vider http dot post car JSON est évier, puis poster l'article du panier. Et en fait, je viens de remarquer que c'est mal. Cela devrait être de créer un article de panier d'achat n'a vraiment pas d'importance dans le grand schéma des choses, mais travaillons simplement avec. Donc cela devrait être créé un article de panier d'achat. Je publie donc un corps JSON ou sérialisation JSON d'article de panier créatif. Et il va aborder les articles du panier d'achat api slash. Donc, cet article de panier d'achat barre oblique d'API vient être ajouté à notre URL de base ici dans le fichier program.cs. Ensuite, nous envoyons l'objet de création d'élément. Ensuite, nous disons que s'il s'agit d'un succès marqué, d'une clé ou d'aucun contenu ou quoi que ce soit que nous ayons vu, nous savons que les différents codes représentent des choses différentes. Donc une vieille réponse clé réussit, alors nous les appelons simplement un poids sur l'asynchrone initialisée, qui redessine tout le thème. Pour l'asynchrone non initialisé, nous voyons simplement les articles qui sont un tableau d'articles de panier d'achat égal à http.get from JSON async shopping cart item sous forme de RE. Et nous avons la même racine là-bas. Je ne vais pas parler de l' architecture et des bonnes pratiques dans cet exemple particulier, je vous montre juste une victoire rapide. Si vous voulez tout ça, vous pouvez jongler. Mes croyances sont que les cours ne sont pas initialisés. Asynchrone récupère tous les éléments et les place à l'intérieur de cet objet, qui est conçu pour les éléments gérés, créer, dit simplement publier les données fournies en tant qu'outil JSON, ce Endpoint, puis allez-y et mettez à jour une fois que tout est réussi, sachez que le reste serait simplement moi de changer le code d'exemple de prévisions météorologiques qui était là et utiliser des éléments sont ce que j'ai dit pour les coûts et la modification des en-têtes de table en fonction mes nouveaux en-têtes de table en fonction des nouvelles données. Ensuite, pour chaque élément des articles, souvenez-vous des éléments provenant de notre appel API. Je ne fais que mettre à jour ou afficher, désolé, les différentes valeurs. Non, pour la section case à cocher, j'ai une entrée de type case à cocher. Je lui donne juste un cours où il a l'air plutôt sympa. La valeur sera liée à n'importe quel article. La quantité est en cours de modification. Il s'agit d'un événement qui signifie que chaque fois que vous modifiez la valeur de la boîte de discussion, je veux appeler cette case à cocher méthode en cliquant passant l'élément et en transmettant la valeur des événements. Donc, parce qu' il sait qu'il s'agit d'une case à cocher, cet événement va avoir des données, était-il vrai ou faux, changer, etc. stratégie où se trouve cette valeur. Lorsque cette méthode cliquée sur la case est appelée, elle va prendre article du panier et cela pourrait facilement l'être, probablement vraiment la mise à jour. Les ports, quel que soit le type d'objet, nous avions utilisé leurs multiples cours avec l'affrontement ici parce que c'est du type panier d'achat que je tente. Je vous montre donc que je prends l' objet du panier d'achat ici. Je prends la valeur de contrôle comme mon, car ma valeur args d'événement devra en faire un objet à ce stade. Ensuite, je formule mon objet d'article de panier de mise à jour et le set divisé qui, je sais, doit être défini. Et puis je suis allé envoyer g sun async, ce type d'objet. Et je vais appeler URL et ensuite utiliser l' interpolation, je reste juste sur item.name DID. C'est pourquoi il était important de passer en revue l'article. Parce que lors de la mise à jour pour répondre aux besoins de données, l'élément d'origine et moi pouvons simplement utiliser l'ID. Je transmets donc cet ID et l'objet entier avec les données qui représentent la mise à jour. Et puis, s'il a réussi, vous redessinez. Ensuite, pour la suppression, nous avons un simple bouton. Donnez-lui une classe de bootstrap, puis cliquez sur nous avons un événement de code similaire et possible avec l'élément. Il est donc possible que les détails puissent être supprimés même si nous n'avons vraiment besoin que de cet identifiant. Donc, nous allons juste dire les liaisons de virus, http dot delete async, pas comme JSON parce qu' il n'y a pas de JSON à transmettre des données raisonnables à analyser, il suffit de supprimer. Et l'URI serait des API, ce panier d'achat que j'essaie ou item.name DID et ensuite nous redessinons. C'est pourquoi vous comprenez cela. Démarre en temps réel, regardez et ressentez l'interface utilisateur car je continue à redessiner chaque fois que l'opération a été couronnée de succès. C'est vraiment ça. Pour les saignements interagissent avec l'API. Bien sûr, il peut devenir un peu plus compliqué en fonction de vos besoins ou autres. Bien sûr, l'API pourrait être un peu plus compliquée. Mais encore une fois, nous ne faisons que gagner rapidement. Et une fois que vous aurez compris ces concepts fondamentaux, vous pouvez toujours vous appuyer sur cela pour vos opérations futures. C'est ça. Vous pouvez appuyer sur Pause aux différents points et répliquer le code. Je fais simplement défiler assez lentement pour que vous puissiez appuyer sur pause à différents intervalles. Vous pouvez voir tout le code. Et je vous encourage à créer plus de points de terminaison ou plus de comportements dans l'API et à créer plus de pages sur les composants, interagir avec ladite API. Une fois de plus, assurez-vous de mettre à jour votre adresse de base et assurez-vous activer les paramètres du cours sur l'API pour les tester simultanément. Vous ne voulez pas accéder à la solution, cliquez avec le bouton droit sur Accéder à Propriétés. Ensuite, vous voudriez sélectionner plusieurs projets de démarrage. Vous pouvez commencer ou les deux, commencer par un débogage, selon celui que vous préférez, fonction du processus artistique. C'est vraiment tout pour tester à l'aide d'une interface utilisateur. 30. Interagir avec CosmosDB: Bienvenue les gars de retour. Dans cette leçon, nous allons subir certains des changements nécessaires pour commencer à parler à la base de données. La base de données sélectionnée pour cet exercice est une base de données 0 Cosmos DB. Nous avons déjà une certaine expérience dans ce domaine. Nous avons plutôt envisagé de l'utiliser comme déclencheur d' entrée ou de liaison d'entrée. Et dans l'ensemble, nous venons de transmettre les données et elles communiqueront avec Cosmos DB. Dans ce contexte, nous allons adopter une approche légèrement différente de l'utilisation des liaisons d'entrée, car certaines opérations sont à effectuer. Je pense que c'est mitigé. Nous pouvons écrire le code trois types d'ondes différents si nous utilisons la liaison d'entrée, car en fonction de la situation, le tribunal va regarder différemment ou nous pouvons être un peu plus cohérents. . Je cherche donc plus de cohérence dans cette situation. Et je vais vous montrer comment configurer votre fonction pour l' injection de dépendance à Hawaï, utiliser le client Cosmos DB pour cette injection totale, qui peut être utilisée partout où que vous soyez. dans n'importe quelle autre fonction. Pour commencer, je veux que nous prenions de nouvelles perspectives. Il suffit de cliquer avec le bouton droit de la souris sur votre projet de fonctions et de déterminer l'objectif de gérer les images et d'obtenir celle-ci Microsoft a créé un point d'extension de point de tâches Web 0 point Cosmos DB. Ce paquet vous donne donc une API pour Cosmos DB ainsi que pour le stockage de table, mais nous allons maintenant nous concentrer sur Cosmos DB. La prochaine chose est de créer une classe de démarrage appelée classe de démarrage similaire à ce que vous voyez dans chaque application Dotnet Core. Nous avons donc un blazer ici. Dans les recherches Dotnet. Cela semble un peu plus condensé que ce à quoi vous êtes probablement habitué, mais c'est à peu près cette classe de démarrage qu' ils ont condensée en un seul fichier. C'est essentiellement des bootstraps et presque des services pour être facilement. Je suis disponible pour l' injection de dépendances n'importe où dans l'application une fois que l'application exécute le code d'écriture R12. C'est donc ce que cela fait. Nous avons donc créé le nôtre, je l'appelle startup.js. Et je vais juste vous montrer le code et vous guider à travers chaque ligne afin que nous ayons une compréhension complète de ce qui se passe. Il suffit donc de cliquer avec le bouton droit de la souris sur votre fonction, d' ajouter une nouvelle classe appelée Startup. Le CSU ne peut pas recevoir d'erreur ou de commentaires que vous créez un type de fonction existant déjà. C'est très bien. Vous pouvez simplement effacer tout cela ou tout ce qui ne correspond pas à ce que j'ai sur mon écran. Il suffit d'aller de l'avant et de rouler en conséquence. Nous avons le premier assemblage d'annotations, deux-points, et nous effectuons un démarrage des fonctions. Ce sera un type de démarrage. Il se peut que vous deviez inclure certaines références manquantes au fur et à mesure, vous devez donc le faire en conséquence. Ou bien les espaces de noms sont des listes de panier d'achat. Nous le savons déjà. Et puis nous avons, ou désolé, notre classe, démarrage, qui hérite du démarrage des fonctions. Ensuite, nous avons des privés qui n'ont de degré que si la configuration racine de configuration est égale à un nouveau constructeur de configuration où nous sommes à la base pour être le répertoire actuel de l'environnement, c'est le répertoire du projet. Nous ajoutons notre fichier JSON dans settings.js IN true, mais bien sûr le settings.js local est activé. Nous savons donc comment y accéder plus tard. Ensuite, nous ajoutons des variables d' environnement , puis nous créons simplement. Ensuite, bien sûr, cela vous donnerait une erreur en disant que vous devez implémenter la classe abstraite, qui est le démarrage des fonctions et cela générerait ce stub de méthode pour vous. C'est un vide de remplacement public, configurez. Tout cela est généré pour vous, fois à l'intérieur de cette méthode, ce que nous voulons faire, c'est dire services de point de construction et ajouter un singleton. Un singleton signifie à peu près que tout ce que vous ajoutez ici sera accessible. Une instance sera accessible dans le cadre de votre application. Donc une connexion ou Cosmos DB, la même connexion au cosmos DB sera utilisée chaque fois que nous accéderons à cette dépendance, n'est-ce pas ? Si vous voulez en savoir plus sur l'injection de dépendances et le blocage contre une mine d'or, c'est bien sûr ce que je vais subir avec cette nulle. Donc la chaîne de connexion var est égale à et ensuite elle regarde dans la configuration. N'oubliez pas que la configuration compile tous ces éléments, y compris notre fichier de paramètres. Nous avons donc déjà ce paramètre en tant que fichier, même si le nom est différent, il saura contextuellement où trouver configuration que nous voyons et me procurerez la connexion Cosmos DB, c'est ce que nous avons appelé dans notre fichier de paramètres locaux, n'est-ce pas ? Nous avons donc déjà regardé cela. J'utilise l'émulateur et je vais vous montrer dans quelques-uns la base de données que nous avons créée. Assurez-vous donc d'ajouter cette clé, connexion Cosmos DB, puis nous ajoutons cette clé d'émulateur en conséquence. Nous appelons donc cette connexion DB , puis nous voyons si elle est nulle ou vide, puis nous lançons une exception. Sinon, retournez une nouvelle instance du générateur de force cosmos avec la création de points de chaîne de connexion. C'est donc notre classe de démarrage que nous avons configurée une fois de plus afin que nous puissions injecter toutes les dépendances que nous avons définies. Nous n'en définissons qu'un qui est destiné au client cosmos. Ne me laissez pas sauter sur notre Cosmos DB. Nous avons déjà une certaine expérience dans ce domaine. Voici nos millilitres. Vous pouvez aller de l'avant et accéder à votre émulateur et en créer un nouveau. Nous avons donc une nouvelle base de données que j' appelle des articles de panier d'achat. Ensuite, le nom de ma collection est des éléments. Et pour ma clé ou par une clé de partition, j'utilise ces catégories de mots. Nous allons donc apporter des changements aux modèles tels que nous les avons. Mais rappelez-vous que les clés de partition aiment une recherche à grande vitesse. Donc, c'est un peu comme les index, vos dossiers ou vos documents, citez sans citation, afin qu'ils puissent être trouvés plus rapidement. Nous ajoutons donc une nouvelle propriété appelée catégorie, ce qui est logique. Il s'agit d'une liste d'articles dans le panier. Quelle est la catégorie ? Est-ce de la nourriture, est-ce des vêtements ? Est-ce un besoin, je ne veux pas, etc. Donc, avec cela, nous pouvons construire notre tissu sur les données et accélérer la recherche, accélérer les opérations de recherche sur toute cette base de données. Vous pouvez y aller de l'avant et le faire. Après avoir créé la base de données, ces derniers examinent les modifications à apporter à nos modèles. Donc, le seul changement que je fais concerne vraiment l'article du panier. Et je suis en train de créer un GNS3. Laissez-moi d'abord choisir un article de panier d'achat. Article de panier d'achat, l'un de le faire hériter de l'entité de table qui est gracieuseté de cette nouvelle classe, Microsoft dot windows, table de points de stockage de points, qui vient dans notre nouveau package. Vous pouvez donc le laisser hériter. Vous n'êtes pas nécessairement obligé de le faire, mais le devis d'avantage sans citation en le laissant hériter est que la classe ou le modèle saura avoir réellement accès à toutes les propriétés obtenues touchés chaque fois que notre document est stocké pour voir beaucoup d'autres balises Meta. Vous les avez probablement remarqués lorsque nous avons fait l'exercice du blog. Un certain nombre d'autres balises Meta sont attachées. Ainsi, une fois hérité de deux entités, il sera en mesure de les analyser. Non, j'ai également ajouté annotation de propriété JSON à notre propriété id req. Désolé, cette propriété JSON voit essentiellement que, Oui, je sais que je suis capital dans le monde C-Sharp , à la fois dans JSON Web, veuillez me rencontrer un identifiant commun. la je sais que je suis capital dans le monde C-Sharp, à la fois dans JSON Web, veuillez me rencontrer un identifiant commun. pour une propriété avec un identifiant commun. Lorsque nous fixons cette valeur d'identification, vous obtiendrez un tas de flèches. Vous pouvez l'essayer vous-même. J'ai eu un peu de terrain avec Hillary. Rappelez-vous qu'il fallait y mettre ça. Donc, vous pouvez vraiment essayer. Une fois que je vous ai montré tout le code et que tout ce que j'ai essayé de faire est créé, je dois voir les erreurs que vous obtenez. Vous vous plaindrez qu'il manque la colonne ID même si elle est présente. Donc, nous le voyons simplement lorsque vous êtes en JSON, veuillez vous identifier comme identifiant commun et Cosmos DB pourra le voir et voir, ok, je vois les prisons de valeur d' identification. Bien sûr, nous ne sommes pas seuls dans Cosmos DB à générer l'ID. C'est ce que nous faisons. Cela reste donc le même. J'ai également ajouté une autre propriété appelée catégorie. Comme je viens de le dire, la catégorie va être notre clé de partition. Et tout comme pour l'ID, nous devons lui faire savoir qu' il s'agit d'une catégorie de clés courantes. Bien sûr, il suffit de faire correspondre la règle de l'année entière à la clé de partition. Je vais juste laisser ça comme ça. Capital C pour la commande Z pour JSON. Ensuite, à l'intérieur de la création, je mets aussi dans cette catégorie. Ainsi, lorsque vous créez l'article, vous voyez le nom et la catégorie. Et bien sûr, il existe de meilleures façons de le faire. Vous pouvez utiliser des énumérations, vous pouvez utiliser une liste de sélection, etc. Mais pour l'instant, nous allons simplement rester simple pour que nous puissions comprendre l' exercice à la quatrième fois, les mises à jour qui sont en fait facultatives. Donc, en fait, je vais le retirer et je l'appellerai un code quand nous y arriverons. Je vais donc supprimer cela pour que la mise à jour ne change pas. Nous ne faisons donc qu'ajouter une catégorie ici. Et pour l'article du panier, nous ajoutons que les étudiants Andy sur la propriété ainsi que la propriété JSON au-dessus de la pièce d'identité. Il arrive bien et passons à notre fonction. Non, vous en remarquerez un, j'ai supprimé tous les mots-clés statiques, publics. Il s'agissait d'une classe statique publique. J'ai supprimé cela parce que classes statiques ne peuvent pas avoir de constructeurs. Nous avons besoin de la construction d'une injection orale. Et l'autre chose est désolée, je viens de supprimer cette ligne. Donc, si vous commencez en servir à nouveau ignoré, je m'excuse. Une autre chose est que nous ne pouvons pas avoir de méthodes statiques car nous devons modifier le code à l'intérieur. Cela signifie que nous devons utiliser le privé. Les champs qui entrent en jeu. Alors que nous expliquons ce qui se passe ici, je vous montre simplement l'érudit que vous obtiendriez si vous soulevez la méthode est statique, donc pas de classe statique ni de méthodes statiques. Très bien, passons ligne par ligne et voyons ce qui se passe ici. Tout d'abord, j' injecte le cosmos prétend que le client cosmos vient de nos débuts. Il s'agit donc de renvoyer une instance ou la dépendance nécessaire pour accéder au client Cosmos. Je vais donc juste écrire un constructeur encerclé pour les directeurs techniques des constructeurs, notre baignoire, notre baignoire. Et puis vous pourriez simplement écrire dans les clients cosmos. Ensuite, en utilisant les points de contrôle, il vous proposera d' initialiser et d'injecter le champ pour vous. Je vais donc afficher un raccourci clavier. Vous pouvez l'écrire rapidement. Nous voulions un client cosmos privé en lecture seule. Et cela est initialisé à l'intérieur de notre constructeur. Ensuite, nous avons un conteneur privé, un conteneur de documents. Et ensuite, nous verrons que le conteneur de documents est égal à Cosmos client.stop container par le nom des articles du panier avec les collègues sur les articles. Par conséquent, si vous survolez cela, vous verrez qu'il demande l'ID de la base de données et l'ID du conteneur. Avec ces outils. Avec le conteneur de documents, je peux maintenant accéder à la base de données, éléments effectués pour toutes les opérations dont j'ai besoin. Je faisais valoir que je trouve cela un peu plus cohérent à faire avec quelques lignes que l'écriture dans déclencheurs individuels est un code de liaison par méthode. Ce qui se serait passé, c'est que j'aurais dû écrire Cosmos DB. Ensuite, après l' initialiseur Cosmos DB pour avoir les valeurs de chaîne de connexion. Je vais faire aussi vite que ce à quoi ça ressemblerait . C'est ça. Voilà donc à quoi ressemblerait notre notation en tant que liaisons d'entrée. Donc, lorsque nous avons examiné les liaisons d'entrée précédemment, nous l'avons fait avec le projet TypeScript, où nous modifions en fait le fichier JSON de la fonction dot js. Il n'y a aucune fonction que le fichier JSON généré pour nous lorsque nous utilisons les projets C-sharp. Nous avons donc mis en place les fixations et les déclencheurs ici même dans notre fonction As en rotation. On dirait donc Cosmos DB, quel est le nom de la base de données, quel est le nom de la collection, puis la chaîne de connexion, qui, bien sûr, pointerait simplement vers le nom dans les paramètres de l'application. Ensuite, nous appelons cela un client de document, client sait en fonction de la situation, vous pourriez finir par utiliser différents types de données ici pour obtenir tous les éléments. Nous utiliserions le client et le code de requête ressemblerait à ceci. Très bien, donc tout d'abord, nous devrions trouver un URI ou générer un URI pour la collection. Je dirai donc URI ou Factory dot créer, désolé, créer une URI de collection de documents, puis nous lui donnons ceux-ci. Vous voyez donc que je répète ces cordes partout. Vous voudriez probablement penser à utiliser une constante plus une constante pour le nom de la base de données ou le souci du nom de la collection, etc. nom de la collection, utiliser une constante plus une constante pour le nom de la base de données ou le souci du nom de la collection, etc. l' ID de la base de données et la collection. Et puis nous dirions que je documente la requête relative au type de données où un bateau doit interroger. Et puis le client documenté par le client crée une requête de document. Ensuite, nous transmettons l' URI en tant que requête de document. Et tout cela peut être étendu au hub où la clause est égale à dire comme nous, puis à mettre dans une condition par laquelle vous vouliez trouver les documents. Il se peut que vous souhaitiez trouver ou faire comme une recherche qui serait utile pour quelque chose comme une recherche. Quoi qu'il en soit, cela retournerait tous les documents, puis nous dirions que si la requête a plus de résultats, nous les interrogerions et ensuite potentiellement renseigner au moins que nous aurions l'intention de renvoyer. Nous avions donc cette liste des meilleurs. Je l'ai également supprimé. Et je ne l'utilise que localement. Il vous suffit donc d' ajouter chaque élément à la liste. C'est ce que vous faisiez, nous n'avons pas adopté cette approche que je vous montre simplement parce qu'il est bon de connaître vos options. Je vais donc commenter cela, et je vais le commenter. Ainsi, au moins lorsque vous regardez le code source ultérieurement, vous pouvez voir que cela aurait correspondu à ce code. Cependant, en raison de l' injection du client sur le dessus, je peux maintenant aller droit et C. Donc d'abord, ma liste est générée ici est déclarée. Et puis je dis que var items est égal à document conteneur dot get item query I itérateur par rapport au type article de panier d'achat. Cela va être comme il faut aller et tout obtenir et ils verront un moment où les objets ont plus de résultats. Nous allions simplement aller de l'avant et ajouter. Un outil de trois pouces ou une nouvelle liste. Très bien, donc la réponse var est égale aux éléments lus en mode asynchrone suivant. Ensuite, nous avons simplement déposé cette plage dans notre liste déroulante, dans notre liste. Et c'est ce que nous reviendrons. Venez y penser. Je pourrais probablement même ce graphique linéaire. Permettez-moi de voir si cela fonctionnerait. Et les éléments C sont lus. Ensuite, il y a des points. Ok, donc c'est un cours doux asynchrone que j'adorerais à notre largeur. Eh bien, si je fais cela nos poids, je serais en mesure de faire une liste de choses à faire sur ce qui est retourné. On y va. Je n'ai probablement même pas besoin de tout ça de toute façon. Deux lignes. Vous voyez, parfois vous écrivez quelque chose, puis vous réalisez que j'aurais pu l' écrire un peu mieux. Je vais donc commenter cela pour l'instant , puis nous pourrons revenir tester et valider si mon refacteur fonctionne comme prévu. Mais vous voyez l'objectif d'obtenir les objets et ensuite nous les obtenons est dans les éléments, les points lus rend l'asynchrone, ce qui en fait le résultat n'est pas les éléments qui étaient en haut qui se trouvent dans nos mémoires ou entre parenthèses, de sorte que nous pouvons appeler les deux listes sur tout ce qui est renvoyé. Très bien, c'est ce que nous revenons quand nous avons essayé de tout obtenir. Passons donc à autre chose. Ils reçoivent une pièce d'identité. Voici donc où cela ressemblerait en fonction de ce que nous avons fait auparavant, où nous avions réellement cette liaison, où nous avons cherché l' ID de la clé de partition, qui dans ce cas est une catégorie. Donc, ici, j'ai modifié l'itinéraire pour me donner un identifiant et une clé de partition. Ce sont les valeurs que je vais utiliser pour exécuter ma requête. J'aurais pu utiliser le même type de reliure que précédemment à l'intérieur de cette méthode ici. Cela nous aiderait à obtenir le seul enregistrement qui correspond à cet ID et à cette clé de partition. Voici donc un exemple de ce à quoi cela ressemblerait, ce code de liaison. Par conséquent, Cosmos DB, nous avons le même nom de base de données, nom de collection et la même chaîne de connexion. Et puis je suis allé lui dire que l'ID est lié à l'ID provenant du paramètre ici. La clé de partition est également liée à la clé de partition qui arrive ici, puis elle sera dispersée. Accédez à Cosmos DB, effectuez la recherche et stockez le résultat au lieu de l'article du panier. Et une fois que nous aurons un article de panier d'achat, vous ne seriez pas aussi facile que retourner des résultats d'objets volumineux, l'article du panier d'achat. Mais comme je l'ai dit, je préfère une sorte de cohérence parce que ce code de liaison va paraître presque entièrement différent de ce code de liaison. Et il faut être très prudent et je ne dis pas que c'est mauvais, je ne suis pas en train de baiser le code. Je vois que ce n'est pas ma préférence, mais je vous montre quelles sont vos options. Je vais donc commenter cela que le PCAOB soit un point de référence. Mais ce que j'ai fait ici, c'est dire que var item est égal à notre conteneur de documents de poids, lire l'élément asynchrone. Donc, obtenez la requête d'article I itérateur. C'est tout ce que nous obtenons dans notre collection. Celui-ci est celui que vous voulez, on voudra un article de panier et je lui donne l'ID, et je lui donne la clé de partition, qui est la catégorie. Bien sûr, j'ai également étendu la liste des paramètres pour inclure l'ID et la catégorie. Et je viens de faire un itinéraire que je signale pour avoir la catégorie barre oblique d'identification dessus. Lorsque vous essayez d' obtenir, vous devez transmettre l'ID de ce que vous obtenez, ainsi que le nom de la catégorie. Vous pouvez parler avec du glucose. C'est ce que nous faisons. Et puis l'article va en fait revenir avec un code d'état. Très bien, il va donc dire que si le code d'état est équivalent au code d'état HTTP, téléphone, nous retournerons les résultats non téléphoniques. Très bien, c'est sympa et simple. Sinon, nous allons de l'avant et retournez les anciens résultats clés sont corrects. Résultats de l'objet avec la ressource item.name. Vous pouvez donc voir que cela a éclaté dans une prise d'essai parce que je faisais quelque chose de mal quand j'ai écrit ceci et j'avais besoin de voir l'exception. Vous ne pouvez donc pas le faire si nécessaire, mais ce n'est vraiment pas forcément. Je suis donc allé le supprimer juste pour simplifier le code et vous montrer exactement ce qui est nécessaire. C'est donc tout. Vous devez rechercher un enregistrement dans le magasin de données Cosmos DB. Passons maintenant en revue ce qui se passe lorsque nous effectuons notre création. Très bien, donc ce que nous faisons ici, c'est vraiment voir que nous voulons faire le même genre de fixations. Bien sûr, je l'ai commenté, mais si vous le regardez, c' est le même genre de liaison, sauf que celle-ci serait une liaison extérieure sur les liaisons de sortie. Il s'agit donc d'une liaison d'entrée. s'agit d'une liaison de sortie car elle va ensuite générer quelque chose dans la base de données Cosmos. Donc, essentiellement, il s'agit d'obtenir la base de données de collection Cosmos DB, nous savons tout cela. Mais le dernier paramètre ici. Il s'agit d'un collecteur asynchrone de type I par rapport au type de données. Nous savons que nous voulons un processus et ensuite son nom. Permettez-moi donc de le mettre dans la même ligne pour qu'il soit un peu plus uniforme. C'est le type de données que nous devons utiliser car nous fonctionnons de manière asynchrone. Si vous ne le faisiez pas de manière asynchrone, nous ne ferons qu' une variable Alt. Vous ne pouvez pas utiliser d'anciens verbaux au lieu d'une méthode asynchrone, nous devons utiliser le collecteur asynchrone par rapport au type de données , puis à l'élément du panier. Et plus tard, dans le code, après avoir reçu l'article du panier et tout, faudrait faire quelque chose il faudrait faire quelque chose comme ça pour l'ajouter à la collection. Voyons donc voir. Articles de panier ALT. Donc une voiture de ce nom qui aurait dû être des articles de panier. Je ne fais que nommer ça parce que nous savons que c'est un ALT. Tout est mis au Cosmos DB, n'est-ce pas ? Donc, les articles du panier d'achat, ne pas ajouter asynchrone, puis nous transmettrons l'article qu'il devrait ajouter. C'est vraiment ce qui se passerait à la fin de cette opération. L'ancien code commenté, tout comme un commentaire le plus froid. Ce que nous faisons cependant, c'est que nous voyons, bien sûr, nous savons que nous obtenons les données du corps, nous les analysons en conséquence, puis nous créons un nouvel article de type cartes d' achat où nous transmettez le nom et la catégorie qui ont été introduits par notre demande. Ensuite, nous voyons la quantité de document et r dot créer un article asynchrone. Nous vous donnons l' article, puis nous lui donnons la valeur de clé de partition. La pertinence de cette valeur clé de partition est que nous utilisons la catégorie qui a été envoyée comme données, n'est-ce pas ? Donc, lorsque j'ai dit cette catégorie, lorsque vous créez cet article et cette catégorie, nous le créons en fonction de notre définition de cette valeur. Donc, quand nous avons fait notre exemple de blog où j'utilisais l'ID à la fois pour l'ID et la clé de partition. Dans ce cas, je montre un exemple plus pratique. Maintenant, vous voudriez vraiment le trancher en fonction d'une catégorie ou d'un regroupement. Nous utilisons la catégorie comme groupe. Ensuite, une fois que vous avez fait cela, nous retournons simplement les résultats de l'ancien objet clé avec l'élément en conséquence. Donc, l'une ou l'autre de ces lignes fonctionnerait par rapport à l'incommentation difficile pour entrer en justice pour adultes. Examinons la mise à jour et comme j'ai supprimé la catégorie de l'article du panier d'achat de mise à jour, nous obtenons cette erreur, mais lorsque nous y arriverons, nous pouvons la regarder. Non, je ne vais pas passer du temps à chercher des alternatives pour le put et la suppression auxquels vous pouvez aller et les rechercher. Je vais juste aller de l'avant et vous montrer comment je l'ai fait. J'ai donc mis à jour la racine ou besoin de mettre à jour l'itinéraire pour inclure la catégorie. Je n'ai donc pas mis dans la catégorie parce que de la façon dont nous le faisons, nous avons toujours besoin de cette clé de partition. Je dois donc étendre cela à la catégorie. Bien sûr, la méthode est mise. Nous obtenons donc les données de la demande et nous les analysons. Et puis je vais voir si nos articles, je vais aller chercher l'élément de la base de données. Nous utilisons donc le même code que celui qui aurait utilisé dans le single GIT, n'est-ce pas ? Eh bien, cette fois, la clé de partition vient de notre catégorie de paramètres, ou nous allons simplement supposer des moyens. Je dois donc m'assurer de mettre une catégorie de chaîne. Et puis une fois qu'il a trouvé l'article ou non, il va vérifier la clé. S'il l'a trouvé, alors nous passons à dire ressource point item. Les données une fois terminées, données doctorales sont stockées dans la ressource item.name. C'est pourquoi nous avons retourné ressource point de l'article n' a pas seulement sauté sur l'article. Je ne sais pas si je l'ai signalé plus tôt. Item.name, ressource, puis nous mettons à jour tout ce que nous devons mettre à jour vers nulle part que je voulais mettre à jour dans le Collected. Donc, si vous l'étendez pour qu'il ait un nom sur ce qu'il sera, ressource item.name a pensé à cette propriété. Et puis nous sommes des poids du conteneur de documents point upsert item async, où nous renvoyons la ressource point article pour trop. Donc, après avoir mis à jour la ressource point article, nous la renvoyons. C'est ce que nous allons quand même retourner, sous forme de données mises à jour. Dans la suppression, nous mettons à jour à nouveau la racine. Nous prenons donc la catégorie comme clé de partition. Et ensuite, nous allons juste voir un élément de suppression de conteneur de documents de poids. Nous constatons que nous supprimons un article de panier d'achat. Nous voulons supprimer l'ID et cette clé de partition en particulier. Ensuite, nous retournons le résultat. C'est tout pour cette opération. Très bien les gars, alors essayons tout ce que nous faisons. Chaque fois que nous faisons quelque chose de cool, nous devons le tester. Je vais juste parler Postman et j'ai déjà fait un test à l'après-guerre que j'ai créé contre moi et je vous ai donné la catégorie des fruits. Voici un retour réussi. On peut y aller et y aller. Donc, c'est tout et j' ai deux enregistrements là-dedans, le soleil qui et moi avons des pommes. L'un est dans la catégorie des aliments, l'autre dans une catégorie de fruits. Donc, plus tôt, quand j'étais statistique, j'utilisais les besoins et les désirs comme test. Et ce que j'ai remarqué, c'est qu' il en a rapporté 500, n'est-ce pas ? J'ai donc une carte d'identité de panier, clés de partition, donc ça devrait vraiment me donner un 404. Cela signifie que vous ne pouvez pas trouver ce que je cherche. Un 500 indique qu'il y a un problème sur mon serveur qui n'est pas exact. Si vous regardez ici, vous verrez qu'il lance une exception car le client HTTP qui appelle Cosmos DB a une méthode qui dit s'assurer que notre qui dit assurer le code de réussite. S'il voit autre chose qu'un 200 ou un de ces 200 codes de réponse, il va en fait exécuter une exception. Donc, même s'il voit qu'il s'agit d'un 404, il lance une exception qui se manifeste par 500 au client, ce que nous ne voulons pas. Ce que j'ai fait, c'est de le refactionner un peu. Je vous montre donc le code qui est appelé et qui génère une exception. Mon refacteur me demanderait d'attraper cet appel à l'intérieur de l'essai. Ensuite, je retourne les résultats de l'ancien objet clé, puis 40 prises. Je vais dire attraper l'exception cosmos sous la forme d'un objet appelé E. Cosmo, donc l'exception est exception personnalisée qui est lancée par cette méthode. Et ensuite, lorsque le code d'état est équivalent à et que nous pouvons simplement utiliser la norme E du code d'état intégré pour ne pas téléphoner, alors nous voulons renvoyer un nouveau 404. Très bien, c'est donc mon facteur littéraire. Je vais donc redémarrer ça et réessayer. Si je l'exécute à nouveau, permettez-moi de m'assurer que cela fonctionne. Donc, si je l'exécute à nouveau et que j'appuie sur Envoyer, non, il n'y a pas d'instance ou il n'y a aucune indication d'exception dans le journal et nous sortons de 404, donc c'est beaucoup mieux. Je voulais que ce soit de la nourriture. Laissez-moi essayer un chariot. Demandes qui ne devraient pas donner quatre, quatre ou 500, et nous y allons. Nous pouvons récupérer l' enregistrement avec succès. Essayons maintenant de mettre. Au départ, j'avais la catégorie dans laquelle je suis prêt à prendre le panier et je suis allé juste le laisser à collecté est vrai que ceux-ci mettent à jour notre valeur d'ID. Donc, l'ID et les clés de partition nécessaires pour le put, laissez-moi mettre les deux et ensuite mettre à jour. Maintenant, vous verrez que c'est vrai. Au départ, nous savons que c'était faux. Nous pouvons voir que c'est vrai. La mise à jour fonctionne. Ensuite, supprimons. Et encore une fois, nous devons insérer notre ID et une clé de partition pour la suppression. Laissez-moi le faire, et c'est 200. D'accord. Donc, si j' essayais de revenir, je n'en ai qu'un. Donc, tout notre code fonctionne avec notre Cosmos DB. Bien sûr, si vous vouliez valider davantage cela, vous pouvez faire apparaître le MLA ou créer un examen MLA pour assurer qu'il est là, puis effectuer tous vos ajustements en conséquence. Jouez avec elle, explorez, voyez ce qui est possible. 31. Mise à jour de l'interface utilisateur: Très bien, donc nous avons passé en revue notre code silencieux, configurant notre application pour qu'elle utilise Cosmos DB, alors passons rapidement en revue certaines des modifications de l'interface utilisateur qui doivent être apportées. Puisque nous avons mis à jour les informations sur les racines de certains de nos points de terminaison, comme nous avons modifié le get pour avoir également besoin de la clé de partition, des choses comme ça. Bien sûr, les points de terminaison devront être mis à jour en conséquence. Ainsi, dans notre client, nous pouvons laisser le point de terminaison de l'API de route ou l'adresse de base telle quelle. Mais ensuite, dans notre composant, je vais apporter quelques ajustements à la mise à jour et à la suppression. Pour les mises à jour. Nous avions dit que oui, nous prenons la carte d'identité, mais nous voulons également que les catégories aient déjà accès à l'article. Donc je vais juste dire barre oblique, ajouter la valeur de la catégorie également la même pour la suppression. Nous allons simplement ajouter à la catégorie. Et c'est vraiment tout ce qu'il y a à mettre à jour ces appels de points de terminaison. Bien sûr, si vous l' étendez pour avoir un discours détaillé sur lequel vous cliquez sur, n'affichez que les détails d' un enregistrement que vous devrez prendre en compte. Je veux dire, il suffit de supprimer ce morceau de code et de vous montrer une autre mise à jour qui est faite. Au départ, j'avais cela comme valeur égale et il est né du bool, mais cela devrait être vérifié. La case à cocher Type d'entrée cochée est égale à n'importe quelle valeur. Ensuite, nous avons cet événement et rien ne change pour rien d'autre. Je vais juste tester ça rapidement. Très bien, c'est donc notre interface utilisateur. Je vais tester cela encore une fois plus agréable pour aider Cosmos DB. Et la catégorie serait aléatoire. Créez un article de panier d'achat. On y va. Très bien. Bien sûr, nous pourrions toujours mettre à jour le code indiquant qu'il vide les zones de texte tant que quelque chose est ajouté avec succès. Sachez avant que vous ayez remarqué que oui, il appelait balle. La valeur de contrôle ne s'affichait pas quand c'était vrai ou non, donc nous venons de le mettre à jour. Donc, si je vérifie celle-ci, laissez-moi simplement afficher la fenêtre de la console pour voir qu' elle va appeler la mise à jour. Là, c'est Le Put ce qu' on appelle avec succès. Donc, si je m'éloigne de cette page lors du retour, ça va lancer une nouvelle requête. Et parfois, lorsque vous interférez avec la console, elle s'arrête. Mais voilà, c'est la nouvelle requête et sachez que la valeur de vérification s'affiche. Donc, si je supprime, nous pouvons voir que la fonction a été appelée, mais ce n'est pas un redessin, donc je peux probablement le revoir. Mais si je m'éloigne et que je reviens et que je l'autorise à exécuter le git, alors nous voyons ici qu'il a effectivement été supprimé. Nous pouvons donc probablement mettre à jour le code de l'interface utilisateur pour le redessiner correctement après que je l'ai supprimé. La solution simple et rapide consiste à modifier ou à modifier méthode de rappel d'événements onclick. Donc, au lieu de faire comme nous l'avons fait avec les args de l'événement, puis nous appelons le nom de la méthode ici. Nous allons juste avoir notre signe publicitaire, ouvrir des parenthèses, puis ouvrir et fermer. C'est plutôt comme une fonction de délégué et c'est que nous la déléguons à notre élément supprimé cliqué. Très bien, à peu près cela ne fera que résoudre ce problème de redessin parce que la façon dont le composant charge que nous le faisions auparavant, il essayerait en fait de tout recharger avant a enregistré que la liste des articles a été mise à jour. Et une autre chose que vous pourriez me voir faire est d'utiliser une liste au lieu d'un tableau qui est vraiment comme un effet matériel normal, j'ai juste tendance à préférer les listes. Les deux domaines pourraient être plus efficaces. C'est à part le moment présent, c'est comme ça que vous pouvez obtenir cette suppression pour redessiner correctement la page. Mais c'est vraiment tout pour les changements nécessaires à notre client. 32. Examen de la section - Créer de l'API REST: Très bien, alors là où c'est un autre jalon et nous allons simplement passer en revue certains des principaux points de discussion de ces activités. Point majeur numéro un, nous espérons savoir que nous avons créé une fonction avec un fichier ou un fichier avec une fonction. Personne ne s'est rendu compte que nous pouvions avoir plusieurs fonctions dans le même fichier de classe, ce qui, dans le cas où nous créons une API de repos , serait un peu plus efficace en termes de ne pas diffuser tous les éléments connexes. points de terminaison ou comportements dans plusieurs fichiers, mais simplement les avoir dans un seul fichier pour une référence. Nous avons également examiné le fait que nous pouvions définir les noms des fonctions séparément de la racine. définissant les règles, En définissant les règles, nous pourrions imiter API RESTful et le mentoré et les offres standard. Nous pouvons obtenir différentes opérations comme GET, poster, PUT et supprimer incluses. Et nous sommes également dans ancien ajustement ou les racines avec des paramètres qui doivent être transmis qui seraient automatiquement désossés par rapport à leur présence dans l'en-tête de la méthode. Voilà donc certaines choses que nous avons examinées. Nous n'avons regardé aucune sécurité qui fera cela lorsque nous allons à vos côtés lorsque nous publions cela. Ils fonctionnent donc tous au niveau de l'autorisation anonyme. L'une des raisons pour lesquelles vous ne voudriez pas le faire suivre ou même maîtriser est qu'à chaque demande, cette clé doit être les prisons. Nous avons examiné cela dans les prochaines leçons. Je ne fais que souligner pourquoi nous sommes restés anonymes pour toutes nos opérations API. Nous avons également envisagé de s'intégrer à nos données. Et nous, nous avons vu que vous pouviez toujours l'ajouter comme une liaison basée sur l'ensemble que vous y intégrez, le code sera différent. J'ai donc inclus les extraits commentés qui allaient en quelque sorte de pair avec l'opération à l'écriture manuscrite. Cependant, j'avais adopté une approche différente car lorsque nous utilisons des liaisons, chaque méthode est basée sur le type de liaison ou sur ce que nous faisions. La banque peut avoir besoin de différents types de données et différentes manières d'interagir avec cette liaison. Au lieu d'avoir cela, vous savez, tous ces changements partout, j'ai plutôt choisi l'option d'injection de dépendance où j'utilise les clients cosmos. Nous avons mis en place une classe de démarrage qui aurait amorcé la police que nous voulions pour notre client cosmos. Et il obtient ça à partir de la connexion Cosmos DB, qui est stockée dans mon SON settings.js local. Et bien sûr, nous émulons cela en utilisant l' émulateur de stockage, du moins pour non. Et après cela, je peux savoir que je viens d' injecter partout. Donc, à l'origine, j'aurais obtenu classe statique publique et des méthodes statiques. J'ai dû prendre tous les mots clés statiques pour soutenir notre injection de dépendances avec ce conteneur de documents sur lequel nous pouvions compter. Je suis plus dans mon livre cohérent WE de variété dans le code pour accomplir certaines choses. Sachez que cela étant dit, c'est pourquoi je vous donne les options car différents plis, différents coups, différentes situations peuvent nécessiter des exécutions différentes, n'est-ce pas ? Donc, ne voyant pas nécessairement que c'est la façon dont il faut le faire, je vous montre simplement ce que je préfère. Très bien. Donc c'est vraiment tout ce qu'il y a à ou API. Nous avons également examiné le fait qu'avec notre Cosmos DB, nous devons inclure notre clé de partition. Et ce faisant, nous devions nous assurer que notre modèle qui représente notre table Cosmos DB possède ID de propriété Jesus On et le propriété JSON qui correspondent au nom de la clé de partition. La dernière chose que nous avons faite était simplement la mise à jour ou l'interface utilisateur pour nous assurer qu'elle reflétait les nouvelles routes et toute autre chose. C'est vraiment tout pour ce module, j'espère que vous avez accompli beaucoup de choses et je veux que vous vous sentiez inspiré d'aller essayer de le faire vous-même. Vous pouvez voir que le Photoshop est assez léger. C'est un moyen facile de commencer à écrire code et à accomplir les choses avec tous les frais généraux des fichiers de projet et des configurations nécessaires à tout cela. On se retrouve dans le module suivant. 33. Déploiement de la fonction Azure: Très bien, les gars, bienvenue. Dans cette section, nous allons examiner la publication ou une fonction 0 en hausse à peu près dans un 0. Il y a donc un certain nombre de nuances à lesquelles nous devons prêter attention. Nous avons déjà parlé des modèles d'hébergement, mais nous allons y jeter un coup d'œil à nouveau. Et nous allons explorer quels besoins recherchés le processus de réflexion doit être mis en place lorsque nous allons publier notre fonction . Alors restez à l'écoute. 34. Publier des fonctions azures: Les gars, alors commençons notre déploiement. Nous allons donc cliquer avec le bouton droit de la souris ou une fonction vers le haut et passer à Publier. Et puis nous avons eu ce magicien. Nous voulions donc publier sur un 0, nous le sélectionnons, puis nous devons spécifier une cible. J'ai peut-être mentionné par inadvertance plus tôt dans ce cours que si vous utilisez Windows, vous voudrez peut-être utiliser C-sharp et ensuite utiliser d'autres langages pour d'autres plateformes. La réalité, cependant, est que .net est en réalité multiplateforme. C-sharp fonctionnera aussi bien sur Windows qu'il ne sera pas marqué et Linux, c'est la réalité. Ainsi, votre fonction au niveau de base peut être déployée sur la version Windows de cette fonction vers le haut ou sur la version Linux de cette fonction. la même manière que Python, Java, TypeScript et JavaScript sur n'importe lequel de ces langages peuvent également être pris en charge. Vous avez également la possibilité de les publier en tant que conteneurs avec Azure Container Registry, ce qui peut vous permettre d'héberger votre image Docker. Cependant, je vais continuer avec Windows. Après avoir sélectionné Windows Weekend, aucune vue ou recherche d' application Photoshop n' a déjà une fonction que j'avais créée dès le début, mais je ne vais pas l'utiliser. Je voulais en créer un tout nouveau. Je vais donc cliquer sur créer une nouvelle fonction. Et puis il va me demander le nom. Quelqu'un voit simplement une API de tiret de panier , le nom de l'abonnement. Bien sûr, celui-ci est que vous serez peut-être invité à vous connecter avec le deux-points 0, afin que vous puissiez continuer à le faire. Je vais le laisser dans l'un des groupes de ressources existants. On y va. Fonction de r g. Si vous n'avez aucun groupe de ressources, vous pouvez simplement cliquer sur Nouveau, puis créer un nouveau nom. Ensuite, nous avons nos types de plans. N'oubliez donc pas que nous avons le plan de consommation, le plan premium et le plan App Service. Il suffit donc de résumer les types de plans et les différents avantages et inconvénients de chacun. Le plan de consommation est le serveur, la rate est le plan le plus abordable. Ce qui est pour et inconvénient est qu'il a réellement des limites avec le temps d'exécution. Au bout d'environ cinq minutes, toute l'application va en fait coupe-vent. Il va donc distribuer les ressources. Et puis, lorsque vous faites une autre demande, il faudra du temps pour redémarrer. Donc, bien sûr, pour tester des victoires rapides, ce serait une bonne approche. Toutefois, pour un scénario réel dans un contexte de production où vous avez besoin d'une efficacité maximale et d'une disponibilité maximale, vous voudrez probablement utiliser Premium lorsqu' il ne se résume pas à Ressources. Vous disposerez de ressources dédiées à tout moment et vous pourrez accéder aux réseaux virtuels et autres ressources sur le réseau. C'est au niveau du réseau. Bien sûr, cela coûte un peu plus cher. Votre autre option serait fusionnée et le plan App Service. Vous avez peut-être déjà un service d'application exécutant notre site Web ou une autre API. Vous pourriez simplement le déployer sur ce plan. Je voulais également suivre ce plan de consommation. Une fois que vous l'avez sélectionné, vous choisissez bien sûr votre emplacement. Et pour moi, ce sera un outil de l'Est des États-Unis. Ensuite, vous choisissez vos histoires ou vos cônes. Je n'en ai qu'un, donc ça peut rester. Ensuite, nous continuons à cliquer sur Créer. Et une fois cela terminé, revenez à cette boîte de dialogue où nous pouvons choisir d'exécuter à partir du fichier de package. C'est donc coché et il est recommandé à peu près qu'il se déploie plus comme un fichier zip avec tous les fichiers requis, les DLL et les fichiers de ressources dont nous avons besoin. Et il se montera comme une image de l'application au lieu que les fichiers réels soient là. Avec une ancienne tendance à comprendre les subtilités, je vais juste laisser ça coché est dit que c' est recommandé, donc je vais suivre leur recommandation. Ensuite, nous pourrons frapper Next. Et ensuite, ils veulent que nous décidions. Voulez-vous publier comme un site Web normal ? Avant le CICD, c'est comme ça que nous avions l'habitude de publier. Il générerait un fichier publié. Déployez tous les fichiers vers un endroit particulier du réseau ou de votre machine, puis il peut les copier et les coller vers la destination. Ou souhaitez-vous utiliser CICD avec GitHub ? J'ai donc déjà ajouté ce GitHub. Si vous le souhaitez, vous pouvez toujours aller de l'avant et le faire. Vous pouvez ajouter le contrôle source à l'aide cette option qui se trouvait dans le coin inférieur droit de Visual Studio. Après avoir fait ce minuscule téléchargé sur GitHub, vous pouvez probablement revenir ici. Très bien, quelqu'un pour utiliser CICD avec GitHub Actions, puis terminer. Cela signifie donc que chaque fois que je vérifie une modification, cela déclenchera réellement un déploiement. Nulle part mène à notre dernier écran où il nous donne un résumé de tout ce qui a pris, s'il vous plaît. Il va en fait ajouter ce nouveau fichier appelé fichier YAML. Un fichier YAML, qui est Kelly, contient toutes les instructions de déploiement que GitHub va utiliser pour déterminer ce qui doit se passer. Nous obtenons également un aperçu de l'URL qui sera générée pour nos zéros. Donc, tout ce dont nous avons besoin, nous pouvons y accéder en direct via cette URL. C'est là que notre EPA sera accessible. Et ici, nous verrons certaines des dépendances que Application Insights doit être configurée. Allons-y et faisons-le. N'oubliez pas que nous voudrions l'avoir pour l'enregistrement. Vous pouvez simplement aller de l'avant et cliquer sur Suivant dans cet assistant et l'autoriser à se terminer. Une fois que vous avez fait cela, c'était sûrement en accord avec les dents configurées. Ils vous montrent également qu'ils remplaceront le stockage Azure pour localement, nous utilisons l'émulateur, mais une fois que nous le déployons, il saura qu'il devrait utiliser le stockage réel, je cite. Très bien, donc avec tout cela fait, et si vous vouliez modifier l'amplificateur pour quelque raison que ce soit, il ne pouvait pas aller dans Plus d'actions, éditer. Et il vous montre ce qui est nécessaire. Comme je l'ai dit, comme je l'ai dit, cela se déclenchera en fait lors de l'enregistrement. Si j'ouvre la fenêtre git changes, vous verrez qu'elle ajoute toutes ces modifications. Et puis je vais voir une activité de déploiement, colonne de déploiement. Ensuite, je suis allé juste venir du tout et le lavabo enregistre toutes les modifications et lui permet de pousser au référentiel. Nous pouvons passer au référentiel dans GitHub et nous pouvons simplement cliquer sur ce petit point qui apparaît côté du poulet ou pour valider des numéros. Donc, si je fais ces détails d'entrée, nous sauterons sur ce CID voir l'écran CICD. Laissons-en quelques uns pour finir. Après quelques minutes, il faut le faire. Passons à notre tableau de bord. Examinons nos ressources. Je vais donc aller sur toutes les ressources et je devrais voir ma nouvelle fonction. On y va. Maintenant, avant d'aller plus loin avec la fonction, rappelez-vous que nous avons besoin d'une base de données Cosmos ou de n' rappelez-vous que nous avons besoin d'une base de données Cosmos ou importe quel type de base de données que vous auriez utilisé. Il faut que cette connexion existe pour que cette connexion soit prête à être testée. Je vais passer sur notre tableau de bord et j'ai déjà créé Cosmos DB, mais je vais vous guider tout au long du processus. Vous pouvez donc accéder à Tous les services, puis rechercher Cosmos DB. Une fois que vous avez le Cosmos DB, vous allez créer. Ensuite, nous utilisons le code SQL principal. Non, sur cet écran, vous choisissez les groupes de ressources. Je vous recommande donc de choisir le même groupe de ressources que votre fonction, bien sûr, vous entrez NameNode sans opposition. La dénomination est très stricte, vous ne pouvez donc pas utiliser de majuscules ou quoi que ce soit. J'aurais donc appelé les articles du panier. Bien sûr, ce n'est vraiment qu'un nom de compte, donc vous n'avez pas forcément à l'appeler ainsi, mais vous lui donnez ce nom s'il vous indique qu' il n'est pas disponible, vous essayez simplement de le rendre un peu plus personnalisé. Ensuite, vous choisissez l' endroit qui vous convient le mieux. Une fois de plus, je recommande de choisir un emplacement le plus proche possible de l'endroit où la fonction a été déployée. Une fois cela fait, vous pouvez choisir si vous souhaitez provisionner le débit ou sans serveur. Et si vous choisissez sans serveur, n'avez évidemment pas les options ci-dessous. Si vous choisissez des débits provisionnés, vous pouvez choisir d'apparaitre qui applique cette réduction de niveau gratuit. Sachez ce que j'ai vécu dans le passé, c'est que je n'ai pas pu bénéficier du rabais de niveau gratuit sur le deuxième troisième plateau. Je ne fais que pointer ce vieux. Si vous essayez de l'appliquer et que vous finissez par avoir un déploiement sur le terrain, vous devrez supprimer cette ressource cohere, réessayez. Et je vous recommande de ne pas postuler. Bien sûr, si c'est votre première fois, alors vous pouvez le laisser là-dessus. Mais si vous choisissez de ne pas postuler, cela commencera à vous coûter ou vous pouvez simplement choisir sans serveur. Vous pouvez également modifier la stratégie bouclée pour réduire les coûts. Donc, comme il ne s'agit pas d'un système de production, vous n' avez pas nécessairement besoin d'être géo-redondant. Vous pouvez créer des magasins de sauvegarde redondants locaux pour que cela coûte moins cher. Mais si sa production et je vous recommande de laisser cela sur la géo-redondance, sont les paramètres réels à réels que vous devriez vous assurer d'être là. Et ce que je vais faire, c'est sauter sur mon compte Cosmos DB déjà provisionné. Une fois que vous êtes ici, vous souhaitez accéder à l'explorateur de données ? Non, cet explorateur de données ressemble à ce que nous aurions vécu avec l'émulateur. Vous créez donc votre nouvelle base de données en fonction de la façon dont vous auriez écrit un code, bien sûr. Et peu importe ce que vous avez fait dans l'armée, il suffit de répéter ces étapes pour créer votre base de données et le conteneur ainsi que la clé de partition à l'intérieur de celle-ci. Très bien, donc avec toute cette configuration, nous voulons nous assurer que nous obtenons la bonne chaîne de connexion. Voici donc une chaîne de connexion principale. Nous pouvons copier cela, puis revenir à notre émotion. Je vais donc aller au tableau de bord, sauter sur la fonction. Ensuite, à l'intérieur de la configuration, nous devons ajouter cette clé de connexion primaire. Rappelez-vous dans notre code, kudos configure que nous aurions besoin de regarder localement dans le point dérangeant JSON, qui aurait été le fichier JSON de paramètres locaux. C'est ce que vous êtes reconnu comme les choses opposées. Cependant, dans un paramètre déployé, nous devons configurer ou définir les paramètres de l'application. Vous verrez simplement que le nouveau paramètre d'application vous donne le nom approprié par rapport à ce que nous avons écrit dans le code, qui dispose d'une connexion Cosmos DB. Ensuite, vous collez cette clé du clinicien primaire ici. Je l'ai déjà fait. Le voilà. J'ai ajouté cet argent. Eh bien, la connexion Cosmos DB et la valeur. Une fois que vous avez toute cette configuration, vous pouvez procéder au test. Pour tester, nous pouvons cliquer sur les fonctions, ce qui nous donnera une liste de toutes les fonctions qui ont été déployées dans ce haut. Si je clique sur l'un d'entre eux, commençons par le panier que j'essaie. Vous trouverez ici un tableau de bord de toutes les exécutions. Vous avez déjà vu à quoi ressemble ce tableau de bord. Si vous passez au trimestre et au test, notez que vous ne pouvez pas écrire de code pour la fonction ici car elle a été déployée à partir de Visual Studio. Toutes les modifications doivent donc être apportées dans Visual Studio. Il ne s'agit vraiment que de le monter et il a le strict minimum en ce qui concerne les configurations. Donc ici, il vous montre que le script israélien chargé à partir de cette DLL, c'est la version compilée de l'ensemble du code source, n'est-ce pas ? C'est ce que nous y verrions. Mais si nous devions revenir en arrière et obtenir l'URL de la fonction, nous serions en mesure d' obtenir cette URL, que nous pouvons simplement coller dans le navigateur pour tester. Si vous voulez surveiller, comme nous l'avons vu précédemment, vous pouvez simplement aller au moniteur et accéder aux journaux. Et lorsque celui-ci est connecté et ouvert en cours d'exécution, vous pouvez procéder au test. Je vais donc juste ouvrir dans un nouvel onglet de navigateur, désolé, et coller. Ici, je reçois ce support de tableau vide. Mais si je regarde dans la déconnexion, voyez qu'elle appelait la fonction et qu'il n'y avait rien à partager. Très bien, donc cela signifie en utilisant Postman ou tout autre outil API, je peux simuler le même genre de cause auquel j'ai l'habitude. est donc ici que nous aurions créé un article de panier d'achat au lieu de poster à l'hôte local quelqu'un pour remplacer tout cela par notre nouvelle URL vers nos sites Web Azure, envoyer la demande. Et je l'ai là. C'est une réponse de 200 OK. Cela signifie que si j' actualise cette demande pour connaître MC dans l' objet de la base de données. C'est vraiment pour la publication ou fonctionnement jusqu'à Microsoft Azure. 35. Deploy et test de l'application de l'UI Blazor: Très bien, les gars. Dans cette leçon, nous allons donc mettre notre client au courant. Ce que j'ai fait, c'est que j'ai sauté sur Visual Studio. J'ai le fichier CS du programme, et je vais changer ce chemin du chemin des fonctions hôtes locales à notre chemin de fonctions déployées. Depuis le tableau de bord. Je vais juste saisir cette URL car c'est notre nouvelle URL de base. Et je suis allé remplacer cette ligne de code. Je vais donc juste dupliquer le commentaire original qui sort et coller cette nouvelle adresse avec cette pièce, puis nous allons le tester. Je vais donc simplement cliquer avec le bouton droit sur ce projet et passer au débogage et commencer par un ancien débogage. Lorsque nous accédons à notre pitch de données de récupération, vous pouvez voir ici que je reçois une erreur. Donc, si je vais inspecter et regarder dans la console pour voir le fil, vous voyez qu' il n'a pas fini. C'est tout ce que ça dit vraiment. Que se passe-t-il si vous regardez au-dessus de cela, vous voyez que l'accès à la récupération à cette adresse partir de cette origine vous a été bloqué dans une stratégie de cours. J'ai donc mentionné les politiques de cours plus tôt, bien sûr le protocole de sécurité des ressources d'origine croisée. En d'autres termes, deux éléments doivent se trouver sur le même réseau ou sur un domaine ou une infrastructure de cadre pour que l'accès soit accordé. Ce que je dois faire, c'est revenir aux fonctions, passer à la politique du cours. On y va. Ajoutez ensuite l'URL. Une fois cela ajouté sur Enregistrer, reviendrai et j'essaierai à nouveau et je remarquerai qu'il n'y a pas d'erreur. Non, j'ai des données provenant de ce que vous allez bien. Très bien, maintenant que j'ai vérifié que cela fonctionne, revenons au program.cs. Et ce que je voulais faire, c'est configurer ceci : si nous sommes en production, nous utilisons le lien Production pour les entretiens. Le député. Très bien. Pour que je puisse le configurer une fois. Je suis allé voir, me donner une adresse de var B, créer une variable appelée adresse de base et la définir comme cette nouvelle URI. Ou plutôt, laissez-moi le définir pour cette chaîne, qui est notre locale. Et puis j'ai dit, si le constructeur point host environnement, c'est, eh bien, c'est l'adresse de développement. Je vais dire que c'est la production. C'est un moyen agréable et facile de vérifier si vous êtes en production lorsque vous utilisez un blazer WebAssembly, puis je vais juste voir l'adresse de base est égale à cette chaîne, qui est notre adresse publiée. Ensuite, je peux avoir une ligne où je vois un problème de services floue derrière moi. adresse est une nouvelle URI en dehors de la valeur de l'adresse de base. Cela étant fait, il sera dynamique. Il y a peut-être des façons plus élégantes de le faire, mais tout cela fonctionnera. Laissez-nous publier notre Up. Je vais juste cliquer avec le bouton droit de la souris. Descendez pour publier, publier. On y va. Je vais ensuite créer un nouveau profil. Donc, le profil qui est là est déjà pour le mouvement complet, mais cette fois, je crée un nouveau profil. Je vais choisir un 0 et je vais publier sur un autre service d'application. Et il va demander quelles instances de service UPS ici. Nous en avons déjà quelques-uns. Je ne vais utiliser aucun de ceux qui sont probablement capables. C'est très bien. Je vais juste en faire un nouveau. Je vais donc en créer un nouveau. Il s'agirait du plan App Service. Le plan App Service est à peu près le « b ». Ensuite, vous déployez sur ce BCE, cet App Service lui-même. Je vais créer un nouveau plan d'hébergement. Je vais appeler cela une liste de panier et la placer dans le même groupe de ressources que notre fonction. L'importance d'attribuer des éléments à la même fonction, au même groupe de ressources, serait que si vous ne vouliez plus le haut et les ressources nécessaires, vous pouvez simplement supprimer le groupe de ressources et tout ce qu'il contient. Et c'est un moyen facile et agréable de nettoyer. Je vais juste les mettre là-dedans aussi. Et je vais mettre ça sur un plan gratuit. En cliquant sur Nouveau. Je choisis mon emplacement, puis je peux passer au forfait gratuit. Mais bien sûr, en fonction de votre contexte, vous ne voulez pas choisir le plan qui répond le mieux à vos besoins. Je vais y aller gratuitement pour cette démo. Nous allons cliquer sur Créer. Lorsque c'est fait, je peux simplement aller de l'avant et cliquer sur Suivant. Et je publierai cela avec la configuration CMC ICD comme fonction. Il suffit de finir. Très bien, et puis cet été, des pages me permettant de savoir quelle sera l'URL dépendante de mon application. À ce moment-là, je peux simplement obtenir des modifications et dire déploiement de configuration pour Blazer, Comments All et synchroniser. Et si vous le souhaitez à nouveau, passez sur GitHub et regardez ce déploiement. C'est fini. Passons donc aux côtés publiés. N'oubliez pas que nous pouvons simplement obtenir cette URL à partir du profil publié ou accéder au bord TO du tableau de bord et l'obtenir à partir du nouveau déploiement. Je fais simplement défiler pour récupérer des données juste pour m' assurer qu'elles peuvent communiquer. Il ne peut pas. Pouvez-vous deviner et me dire pourquoi ? Eh bien, si vous avez deviné que les politiques de cours ne sont pas définies, alors vous avez bien deviné, n'est-ce pas ? Ici, nous pouvons le voir. C'est toujours un cours compatible. Pourquoi se plaigne-t-il des deux cœurs ? Parce que c'est un nouveau nom de domaine distinct de celui que nous avions utilisé initialement, n'est-ce pas ? Je dois revenir à la fonction, passer à la configuration de la stratégie de cours et à cette nouvelle URL. Laissez-moi simplement m'assurer que j'utilise le format. Économisez et profitez des fruits de notre travail qui publie la configuration de nos clients, qui communique avec notre fonction. Il y a d'autres choses que nous pouvons faire avec ces autres configurations que nous pouvons réaliser en cours de route pour y répondre plus facilement. J'en discuterai plus tard, mais pour l'instant, nous avons publié avec succès l'API et notre client. 36. Configurer la sécurité: Très bien, donc maintenant, nous allons discuter de la sécurité. Voyons voir que nous survolons. Oui. Nous voulons sécuriser la fonction et nous ne voulons pas permettre à tous les n, à quiconque d'accéder aux données ou simplement à l'école où ils le souhaitent. Ainsi, comme vous pouvez le voir jusqu'à présent, les URL sont assez ouvertes à la fonction, quiconque obtient une prise de l'URL peut comprendre le modèle ou s'il l' a vu au moins une fois, il suffit de mettre API barre oblique Et ensuite ce point de terminaison pour pouvoir y accéder. Non. Il existe différentes façons de sécuriser une API au niveau très basique , vous pouvez mettre comme une touche désactivée ou demander qu'une clé hors clé soit présentée dans l'en-tête. La norme actuelle de l'industrie utilise des jetons Web JWT ou JSON. Mais le quota baissier et les entraîneurs que vous devrez réellement configurer votre fonction. Recherchez ces jetons, ces clés sont-elles dans chaque demande. Et il ne faut pas oublier de le faire pour chaque fonction. Cela peut entraîner des frais généraux, en particulier lorsque vous disposez de plusieurs fonctions et de plusieurs opérations que vous prenez en charge. Une autre façon serait d'utiliser les clés que nous aurions regardées, les clés UPC où nous pouvons les placer par défaut ou anonyme, au niveau de fonction par rapport au niveau maître administrateur. L'inconvénient est qu'une fois que vous avez défini la clé, cette clé doit être présente dans l'URL et cette clé ne change que si vous modifiez la commande. C'est soit vous allez devoir maintenir le besoin de GnG à chaque fois, soit vous allez devoir exposer cette clé. Et la clé serait présente dans l'URL provenant de la configuration de notre client demandeur. Quoi qu'il en soit, quelqu'un pourrait toujours être en mesure obtenir ces informations et d'accéder à votre API. Cela aurait plus de sens si c'était comme au niveau du réseau de machine à machine. Donc, si vous créez une fonction up et que vous aviez comme un autre serveur configuré l'appel de la fonction. Cela signifie donc que vous ne voyez aucun trafic URL, son trafic GTP passe dans le navigateur ou que vous surveillez Dr. MB, reniflez très facilement. Puis il a eu les clés sera une victoire très rapide. Cependant, parce que nous avons le côté client, je pense qu'il est préférable d'imposer une sécurité côté client ou faire croire qu'elle est côté client. Ainsi, lorsqu'un utilisateur essaie d'entrer dans l'application, il devra s'authentifier ici pour accéder à la fonction. Ainsi, un moyen facile de commencer à utiliser est de passer à l'option d'authentification notre tableau de bord pour améliorer notre fonction. Ensuite, nous allons ajouter un fournisseur d'identité. Maintenant, ce sera comme une mini version d'Azure AD. Si vous avez utilisé Azure AD, vous savez que vous pouvez utiliser différents fournisseurs, dont ceux qui prennent en charge OAuth2 Standard. Si vous n'êtes pas si familier, vous pouvez consulter mes développeurs Microsoft Azure pour dotnet où nous procédons à configuration avec Azure AD, que ce soit pour l'entreprise ou pour les mots. clients. Mais il s'agit d'une version deux très réduite, que vous n'avez même pas besoin d'une compréhension complète d' Azure AD pour accomplir ce que nous sommes sur le point de faire. Premièrement, nous choisissons un fournisseur d'identité sachant que chacun d'entre eux peut nécessiter une certaine configuration. Bien sûr, pour Twitter, Google et Facebook, vous allez en avoir deux dans le monde entier et enregistrer votre application et toutes sortes de choses. Quelqu'un pour choisir le chemin de ces résistances. Je vais juste utiliser Microsoft. Alors, ça va juste me demander, accord, qu'est-ce que je veux être distribué ? Oui, stockage ou cônes. Le soutien d'un adversaire type, vous voudrez probablement faire un peu d' attention ici pour vous assurer que vous allez choisir celui qui convient le mieux à votre opération. Je ne peux choisir que le locataire actuel, ce qui signifie que le locataire étant le compte sur lequel l'application a été déployée sur n'importe quel utilisateur ayant accès à ce document est facile dans ce locataire . en ce qui concerne votre AD, ils ne sont que ceux que je peux également dire n'importe quel répertoire Azure AD. Donc, s'il s'agit de plusieurs locataires, je peux le choisir. Je peux voir n'importe quel compte Active Directory et Microsoft personnel, et je ne peux le voir que des comptes Microsoft personnels. Je vais y aller avec celui-là. Même si celui-ci fonctionnerait probablement pour, encore une fois, Azure AD, la gestion des utilisateurs. C'est pourquoi celui que vous choisissez est très important. Encore une fois, si vous voulez plus de détails à ce sujet, vous pouvez vous en informer dans l'autre cours. Nous le ferons avec n'importe quel compte Azure AD et Microsoft personnel. Cela devrait me permettre de me connecter même avec mon compte personnel connu sous votre compte si j'avais une authentification de service unique sur les paramètres, comment restreindre l'accès ? Quand je suis allé voir, vous pouvez simplement lire, nécessitant une authentification par auteur, pour que tout le monde ait besoin de s'authentifier. Si vous autorisez les demandes non authentifiées, vous aurez besoin de votre propre code. Ce n'est pas un problème. J'ai juste besoin d'une authentification. Donc, une fois que vous chauffez ici, vous allez simplement appeler l'API ou la fonction. J'ai besoin d'une authentification. Pour l'authentification sur les demandes authentifiées. Nous pouvons choisir celui en fonction de la façon dont vous souhaitez profiter de votre expérience utilisateur. Et cela redirigera vers Microsoft et nous stockerons le Tolkien. Je vais donc simplement cliquer sur Ajouter. Avec tout cela fait , ajouté ou perçu. Nous obtenons l'écran et null. Nous devrions pouvoir bénéficier d' une certaine authentification. Donc, si j'essaie d'accéder directement à l' URL de la fonction , je vais simplement me rediriger pour autoriser ou authentifier. Si je n'étais pas déjà connecté, il me demanderait de saisir mes informations d'identification et cela me permettrait d'y accéder. Il constate que je demande l' autorisation de cette API. Et je voudrais l'accepter. Après avoir accepté cela, il me donnera mon consentement. Et puis je peux aller à la fonction sans fenêtre et dire que cette activité est qu'elle cessera de fonctionner dans notre blazer. C'est quelque chose de nouveau pour plusieurs raisons. Vous allez voir qu'un corps est, et ce qui se passe, c' est qu'il dit qu'il ne peut pas rediriger vers l'URL de connexion car c'est moi qui est redirigé depuis l'URL de l'API, depuis l'URL du site Web. Il y a donc beaucoup plus de configuration qui doit entrer là-dedans. Et cela ne se produira pas dans cette leçon particulière. Je voulais juste vous montrer comment configurer et même sécuriser les fonctions. Mais ensuite, préparer Blazer pour une configuration 0 AD est hors du champ d'application du contenu Azure Functions de ce cours. Mais je ne fais que vous montrer certaines des ramifications sur les choses que vous devez surveiller. Vous pouvez donc toujours revenir à votre API et modifier différents aspects de cette authentification que vous avez ajoutés. Vous avez réellement ajouté votre AD dans une suite très express, n'est-ce pas ? Donc, au lieu d'accéder manuellement à Azure AD et city02, simplement en ajoutant une authentification à ce sujet, vous lui auriez dit que vous vouliez qu' Azure AD sécurise la sécurité. Et vous pouvez revenir en arrière, modifier l'authentification, vous pouvez simplement la désactiver. Si vous ne voulez pas qu'il soit activé, vous pouvez modifier les règles ici en fonction de ce dont vous avez besoin. Vous pouvez également accéder au fournisseur d'identité et cliquer et modifier d'autres éléments. Bien que les choses soient les différents aspects des séances Azure AD qui ont été appliquées. Encore une fois, consultez les points de terminaison ici. Vous pouvez accéder à votre client sur votre locataire, en hausse, désolé, sur un client et sur les identifiants d'application. Vous pouvez accéder à l'URL de votre identifiant d'application. Si vous avez besoin de vous appuyer là-dessus, vous pouvez le faire. Comme je l'ai dit, Azure AD n' est pas dans le cadre de ce cours, donc je ne vais pas entrer dans trop de détails sur ce qui est possible. C'est donc vraiment facile de sécuriser votre fonction sur pratiquement n'importe quelle fonction que vous déployez. Un service d'applications que vous déployez peut être sécurisé tout aussi facilement. 37. Examen de la section - Publier l'application de fonctions azure: Très bien, les gars, donc dans cette section nous avons abordé plusieurs choses. Nous avons examiné comment publier notre Azure Up sur lequel nous avons travaillé dans Visual Studio. Nous avons également examiné certains des changements qui seront nécessaires tant pour le publié que pour tout autre client qui doit interagir avec lui. Nous avons mis en place une preuve publiée pour la fonction et notre application cliente, qui était vraiment là comme démonstrative, mais n'est pas vraiment les points focaux, donc ça n'a pas dépensé trop de temps là-dessus. Mais nous avons pu les déployer à l'aide de pipelines CICD gracieuseté de GitHub et de voir comment vous mixez tout facilement et en toute transparence. Nous avons également examiné certaines options de sécurité pour nos fonctions utilisant Azure AD et tout peut simplement circuler. À la fin de cela, vous devriez pouvoir mettre vos fonctions 0 sur Azure et être prêtes à la production. 38. Conclu: Les gars, félicitations d' arrivés à la fin de ce cours où vous avez appris tout ce qu'il faut savoir sur les fonctions. Dans ce cours, nous avons abordé la configuration d'une fonction 0 à l'aide du portail. Comment écrire des fonctions ici même dans le portail, les différents types de déclencheurs qui peuvent être utilisés. Nous pouvons donc avoir une fonction déclenchée par blob plutôt qu'une fonction déclenchée par minuterie, ou peut-être la fonction la plus couramment utilisée, qui est une fonction déclencheur HTTP. Vous avez également examiné le fait que vous disposez de modèles de déploiement différents. Vous avez le plan sans serveur contre le plan premium par rapport au plan de consommation, chacun ayant son propre avantage. Nous avons également passé en revue et créé notre propre suite de fonctions que nous avons déployées dans ses propres applications et d'applications telles que l'API Arrest Fully. Ici, nous n' avons pas eu à écrire beaucoup de code et nous n'avons pas à nous soucier des serveurs et de la configuration d'IIS. Tout ce que nous avons fait, c'est écrire un tas de fonctions qui interagissent avec une base de données Cosmos DB très simple peuvent être appelées depuis n'importe quel client. Une fois déployé sur un 0, nous avons examiné comment nous pouvons y accéder par Internet tout au long des stratégies de cours de fin de semaine pour nous assurer qu'elles sont entièrement accessibles. Tout ce dont nous avons besoin, c'est cet astérisque pour dire que n'importe qui peut y accéder. Nous avons également examiné comment le sécuriser à l'aide d'Azure AD. Malgré l'exemple très spécifique que nous avons suivi, nous explorons également différentes options de fonctions telles que les fonctions durables. Nous avons examiné les différents types de fixations qui peuvent être utilisées. Et nous avons examiné tous les différents outils qui peuvent se réunir pour nous aider à arriver là où nous en sommes. Nous avons donc examiné les émulateurs, nous avons examiné les principaux outils, nous avons examiné Visual Studio Code vs Visual Studio. Quelle que soit votre plateforme, il existe un outil qui vous convient avec tout ce qui est dit et fait. Merci d'être venu avec moi dans ce voyage. Et j'ai hâte de voir ce que vous produisez.