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.