Samouczek: tworzenie bezserwerowego interfejsu API przy użyciu języków TypeScript i MongoDB
Z tego samouczka dowiesz się, jak utworzyć bezserwerowy interfejs API przy użyciu usługi Azure Functions i języka TypeScript do przechowywania danych w bazie danych MongoDB. Przeprowadzimy Cię przez proces wdrażania aplikacji na platformie Azure, dzięki czemu będzie ona dostępna za pośrednictwem publicznego punktu końcowego HTTP.
Wymagania wstępne
Zainstaluj następujące oprogramowanie:
- Tworzenie bezpłatnej subskrypcji platformy Azure
- Zainstaluj Node.js LTS. Wybierz wersję obsługiwaną przez usługę Azure Functions.
- Najnowsza wersja języka TypeScript .
- Usługa Azurite zainstalowana globalnie na potrzeby lokalnego magazynu programistycznego
- Najnowsza wersja narzędzi Azure Functions Core Tools zainstalowana globalnie na potrzeby programowania lokalnego.
- Zainstaluj program Visual Studio Code i użyj następujących rozszerzeń:
- Azure Resources (Zasoby platformy Azure)
- Azure Functions
- Bazy danych platformy Azure
Architektura rozwiązania
Rozwiązanie używa aplikacji usługi Azure Functions do odbierania danych, które są następnie wysyłane do usługi Azure Cosmos DB z zestawu Mongoose SDK.
Otwieranie środowiska projektowego
W terminalu lub wierszu polecenia utwórz nowy folder w systemie lokalnym, który będzie używany jako katalog główny projektu usługi Azure Functions.
mkdir <YOUR-NEW_FOLDER-NAME>
Przejdź do nowego folderu.
cd <YOUR-NEW_FOLDER-NAME>
Otwórz ten folder w programie Visual Studio Code.
code .
Logowanie do platformy Azure w programie Visual Studio Code
- Otwórz paletę poleceń.
- Wyszukaj i wybierz pozycję
Azure: Sign in
. Wykonaj krok uwierzytelniania na platformie Azure.
Tworzenie grupy zasobów platformy Azure
Grupa zasobów to kolekcja zasobów oparta na regionie. Tworząc grupę zasobów, a następnie tworząc zasoby w tej grupie, na końcu samouczka możesz usunąć grupę zasobów bez konieczności usuwania poszczególnych zasobów osobno.
W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
Znajdź subskrypcję w obszarze Zasoby i wybierz ikonę + , a następnie wybierz pozycję Utwórz grupę zasobów.
Aby ukończyć monity, użyj poniższej tabeli:
Monit Wartość Wprowadź nazwę nowej grupy zasobów. azure-tutorial
Wybierz lokalizację nowych zasobów. Wybierz blisko siebie region geograficzny.
Tworzenie lokalnej aplikacji usługi Functions
Utwórz lokalną aplikację usługi Azure Functions (bezserwerową), która zawiera funkcję wyzwalacza HTTP.
W programie Visual Studio Code otwórz paletę poleceń (Ctrl + Shift + P).
Wyszukaj i wybierz pozycję Azure Functions: Create New Project (Utwórz nowy projekt ).
Użyj poniższej tabeli, aby zakończyć tworzenie lokalnego projektu funkcji platformy Azure:
Monit Wartość Uwagi Wybierz folder, który będzie zawierać projekt funkcji Wybierz bieżący (domyślny) folder. Wybierz język TypeScript Wybieranie modelu programowania TypeScript Model V4 Wybieranie szablonu dla pierwszej funkcji projektu Wyzwalacz HTTP Interfejs API jest wywoływany z żądaniem HTTP. Podaj nazwę funkcji blogposts
Trasa interfejsu API to /api/blogposts
Gdy program Visual Studio Code utworzy projekt, wyświetl kod interfejsu
./src/functions/blogposts.ts
API w pliku.import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; export async function blogposts(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function processed request for url "${request.url}"`); const name = request.query.get('name') || await request.text() || 'world'; return { body: `Hello, ${name}!` }; }; app.http('blogposts', { methods: ['GET', 'POST'], authLevel: 'anonymous', handler: blogposts });
Ten kod jest standardowy standardowy w nowym modelu programowania w wersji 4. Nie jest przeznaczony do wskazania jedynego sposobu pisania warstwy interfejsu API za pomocą funkcji POST i GET.
Zastąp poprzedni kod poniższym kodem, aby zezwolić na zwracanie wszystkich wpisów w blogu tylko żądań GET.
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; // curl --location 'http://localhost:7071/api/blogposts' --verbose export async function getBlogPosts(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function getBlogPosts processed request for url "${request.url}"`); // Empty array for now ... will fix later const blogposts = []; return { status: 200, jsonBody: { blogposts } }; }; app.get('getBlogPosts', { route: "blogposts", authLevel: 'anonymous', handler: getBlogPosts });
Istnieje kilka zmian modelu programowania usługi Azure Functions Node.js w wersji 4 w tym kodzie, które należy zwrócić uwagę:
- Nazwa
getBlobPosts
funkcji , wskazująca, że jest to żądanie GET, pomoże wyizolować funkcję w dziennikach. - Właściwość jest ustawiona
route
nablogposts
, która jest częścią domyślnej trasy interfejsu API podanej:/api/blogposts
. - Właściwość
methods
została usunięta i jest niepotrzebna, ponieważapp
użycieget
obiektu wskazuje, że jest to żądanie GET.
- Nazwa
Uruchamianie lokalnego emulatora magazynu usługi Azurite
Tworzenie funkcji na komputerze lokalnym wymaga emulatora usługi Storage (wersja bezpłatna) lub konta usługi Azure Storage (płatne).
W osobnym terminalu uruchom emulator magazynu lokalnego Azurite .
azurite --silent --location ./azurite --debug ./azurite/debug.log
Jest to wymagane do lokalnego uruchomienia usługi Azure Functions przy użyciu lokalnego emulatora usługi Azure Storage.
Zaktualizuj emulator magazynu lokalnego
local.settings.json
jest określony w pliku za pomocą właściwości AzureWebJobsStorage na wartośćUseDevelopmentStorage=true
.{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "AzureWebJobsFeatureFlags": "EnableWorkerIndexing" } }
Uruchamianie lokalnej funkcji bezserwerowej
Uruchom projekt usługi Azure Functions lokalnie, aby przetestować go przed wdrożeniem na platformie Azure.
W programie Visual Studio Code ustaw punkt przerwania na instrukcji
return
na końcu funkcji getBlogPosts .W programie Visual Studio Code naciśnij F5 , aby uruchomić debuger i dołączyć go do hosta usługi Azure Functions. Włącz publiczne i prywatne punkty końcowe, jeśli zostanie wyświetlony monit.
Możesz również użyć polecenia menu Debuguj >rozpocznij debugowanie.
Dane wyjściowe są wyświetlane na panelu Terminal .
W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
W sekcji Obszar roboczy znajdź i rozwiń węzeł Projekt lokalny ->Functions ->getBlogPosts.
Kliknij prawym przyciskiem myszy nazwę funkcji, getBlogPosts, a następnie wybierz pozycję Kopiuj adres URL funkcji.
W przeglądarce wklej i prześlij adres URL.
Alternatywnie możesz użyć następującego polecenia cURL w terminalu:
curl http://localhost:7071/api/blogposts --verbose
Gdy debuger zostanie zatrzymany w programie Visual Studio Code, puste wpisy w blogu będą widoczne w oknie Zmienne lokalne>. Zezwól debugowaniu na kontynuowanie przeszłości tego punktu przerwania, naciskając F5 ponownie.
Odpowiedź pustej tablicy wpisów w blogu jest zwracana jako:
{ "blogposts": [] }
W programie VS Code zatrzymaj debuger, Shift + F5.
Tworzenie aplikacji funkcji platformy Azure w programie Visual Studio Code
W tej sekcji utworzysz zasób aplikacji funkcji w chmurze i powiązane zasoby w ramach subskrypcji platformy Azure.
W programie Visual Studio Code otwórz paletę poleceń (Ctrl + Shift + P).
Wyszukaj i wybierz pozycję Azure Functions: Utwórz aplikację funkcji na platformie Azure (zaawansowane).
Podaj następujące informacje po wyświetleniu monitów:
Monit Wybór Wybierz subskrypcję Wybierz subskrypcję rozliczeniową. Wprowadź globalnie unikatową nazwę aplikacji funkcji Wpisz nazwę prawidłową w ścieżce adresu URL, na przykład first-function
. Popend 3 znaki, aby adres URL był globalnie unikatowy. Typ nazwy jest weryfikowany, aby upewnić się, że jest on unikatowy w usłudze Azure Functions.Wybieranie planu hostingu Wybierz pozycję Zużycie. Wybieranie lokalizacji dla nowych zasobów Wybierz lokalizację geograficzną w pobliżu. Wybieranie stosu środowiska uruchomieniowego Wybierz najnowszą wersję LTS. Wybieranie systemu operacyjnego Wybierz pozycję Linux. Wybieranie planu hostingu Wybierz pozycję Zużycie. Wybierz grupę zasobów dla nowych zasobów Wybierz grupę zasobów utworzoną w poprzednim kroku. Wybieranie konta magazynu Wybierz pozycję Utwórz nowe konto magazynu i zaakceptuj nazwę domyślną. Wybierz zasób usługi Application Insights dla aplikacji. Wybierz pozycję Utwórz nowy zasób usługi Application Insights i zaakceptuj nazwę domyślną. Poczekaj, aż powiadomienie potwierdzi utworzenie aplikacji.
Wdrażanie aplikacji funkcji platformy Azure na platformie Azure w programie Visual Studio Code
Ważne
Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.
- Wybierz ikonę platformy Azure na pasku działań, a następnie w obszarze Zasoby kliknij prawym przyciskiem myszy zasób aplikacji funkcji i wybierz pozycję Wdróż w aplikacji funkcji.
- Jeśli zostanie wyświetlony monit o to, czy na pewno chcesz wdrożyć, wybierz pozycję Wdróż.
- Po zakończeniu wdrażania zostanie wyświetlone powiadomienie z kilkoma opcjami. Wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.
Uruchamianie zdalnej funkcji bezserwerowej
W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
W sekcji Zasoby rozwiń zasób aplikacji funkcji platformy Azure. Kliknij prawym przyciskiem myszy nazwę funkcji i wybierz pozycję Kopiuj adres URL funkcji.
Wklej adres URL do przeglądarki. Ta sama pusta tablica jest zwracana jak podczas lokalnego uruchamiania funkcji.
{"blogposts":[]}
Dodawanie integracji interfejsu API usługi Azure Cosmos DB dla bazy danych MongoDB
Usługa Azure Cosmos DB udostępnia interfejs API bazy danych MongoDB w celu zapewnienia znanego punktu integracji.
W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
W sekcji Zasoby wybierz pozycję Utwórz + serwer bazy danych. Skorzystaj z poniższej tabeli, aby ukończyć monity o utworzenie nowego zasobu usługi Azure Cosmos DB.
Monit Wartość Uwagi Wybieranie serwera usługi Azure Database Interfejs API usługi Azure Cosmos DB dla bazy danych MongoDB Podaj nazwę konta usługi Azure Cosmos DB. cosmosdb-mongodb-database
Postpend trzy znaki, aby utworzyć unikatową nazwę. Nazwa staje się częścią adresu URL interfejsu API. Wybierz model pojemności. Serverless
Wybierz pozycję Wersja bazy danych MongoDB. Wybierz najnowszą wersję. Wybierz grupę zasobów dla nowych zasobów. Wybierz grupę zasobów utworzoną w poprzednim kroku. Wybierz grupę zasobów utworzoną w poprzedniej sekcji. Poczekaj na utworzenie zasobu. Stan można zobaczyć w sekcji Platformy Azure w okienku wyników.
Instalowanie zależności mongoose
W terminalu programu Visual Studio Code naciśnij Ctrl + Shift + `, a następnie zainstaluj pakiet npm:
npm install mongoose
Dodawanie kodu mongoose dla wpisów w blogu
W programie Visual Studio Code utwórz podkatalog o nazwie lib pod
./src/
adresem , utwórz plik o nazwie./database.ts
i skopiuj do niego następujący kod.import { Schema, Document, createConnection, ConnectOptions, model, set } from 'mongoose'; const connectionString = process.env.MONGODB_URI; console.log('connectionString', connectionString); const connection = createConnection(connectionString, { useNewUrlParser: true, useUnifiedTopology: true, autoIndex: true } as ConnectOptions); export interface IBlogPost { author: string title: string body: string } export interface IBlogPostDocument extends IBlogPost, Document { id: string created: Date } const BlogPostSchema = new Schema({ id: Schema.Types.ObjectId, author: String, title: String, body: String, created: { type: Date, default: Date.now } }); BlogPostSchema.set('toJSON', { transform: function (doc, ret, options) { ret.id = ret._id; delete ret._id; delete ret.__v; } }); export const BlogPost = model<IBlogPostDocument>('BlogPost', BlogPostSchema); connection.model('BlogPost', BlogPostSchema); export default connection;
W programie Visual Studio Code otwórz
./src/functions/blogposts
plik i zastąp kod całego pliku następującym kodem:import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; import connection from '../lib/database'; // curl --location 'http://localhost:7071/api/blogposts' --verbose export async function getBlogPosts(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function getBlogPosts processed request for url "${request.url}"`); const blogposts = await connection.model('BlogPost').find({}); return { status: 200, jsonBody: { blogposts } }; }; app.get('getBlogPosts', { route: "blogposts", authLevel: 'anonymous', handler: getBlogPosts });
Dodawanie parametry połączenia do aplikacji lokalnej
W eksploratorze platformy Azure programu Visual Studio Code wybierz sekcję Azure Cosmos DB i rozwiń, aby kliknąć prawym przyciskiem myszy pozycję Wybierz nowy zasób.
Wybierz pozycję Kopiuj parametry połączenia.
W programie Visual Studio Code otwórz plik
./local.settings.json
za pomocą Eksploratora plików.Dodaj nową właściwość o nazwie
MONGODB_URI
i wklej wartość parametry połączenia.{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "node", "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "MONGODB_URI": "mongodb://...." } }
Wpisy tajne w
./local.settings.json
pliku:- Nie jest wdrażana na platformie Azure, ponieważ jest ona zawarta
./.funcignore
w pliku. - Nie jest zaewidencjonowany w kontroli źródła, ponieważ znajduje się w
./.gitignore
pliku.
- Nie jest wdrażana na platformie Azure, ponieważ jest ona zawarta
Dodawanie parametry połączenia do aplikacji zdalnej
- W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
- W sekcji Zasoby znajdź wystąpienie usługi Azure Cosmos DB. Kliknij prawym przyciskiem myszy zasób i wybierz polecenie Kopiuj parametry połączenia.
- W tej samej sekcji Zasoby znajdź aplikację funkcji i rozwiń węzeł.
- Kliknij prawym przyciskiem myszy pozycję Ustawienia aplikacji i wybierz pozycję Dodaj nowe ustawienie.
- Wprowadź nazwę ustawienia aplikacji,
MONGODB_URI
a następnie naciśnij Enter. - Wklej skopiowaną wartość i naciśnij Enter.
Dodawanie interfejsów API do tworzenia, aktualizowania i usuwania wpisów w blogu
W programie Visual Studio Code użyj palety poleceń, aby znaleźć i wybrać pozycję Azure Functions: Utwórz funkcję.
Wybierz pozycję Wyzwalacz HTTP i nadaj mu
blogpost
nazwę (pojedyncza).Skopiuj następujący kod do pliku.
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; import connection, { IBlogPost, IBlogPostDocument } from '../lib/database'; // curl -X POST --location 'http://localhost:7071/api/blogpost' --header 'Content-Type: application/json' --data '{"author":"john","title":"my first post", "body":"learn serverless node.js"}' --verbose export async function addBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function addBlogPost processed request for url "${request.url}"`); const body = await request.json() as IBlogPost; const blogPostResult = await connection.model('BlogPost').create({ author: body?.author, title: body?.title, body: body?.body }); return { status: 200, jsonBody: { blogPostResult } }; }; // curl -X PUT --location 'http://localhost:7071/api/blogpost/64568e727f7d11e09eab473c' --header 'Content-Type: application/json' --data '{"author":"john jones","title":"my first serverless post", "body":"Learn serverless Node.js with Azure Functions"}' --verbose export async function updateBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function updateBlogPost processed request for url "${request.url}"`); const body = await request.json() as IBlogPost; const id = request.params.id; const blogPostResult = await connection.model('BlogPost').updateOne({ _id: id }, { author: body?.author, title: body?.title, body: body?.body }); if(blogPostResult.matchedCount === 0) { return { status: 404, jsonBody: { message: 'Blog post not found' } }; } return { status: 200, jsonBody: { blogPostResult } }; }; // curl --location 'http://localhost:7071/api/blogpost/6456597918547e37d515bda3' --verbose export async function getBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function getBlogPosts processed request for url "${request.url}"`); console.log('request.params.id', request.params.id) const id = request.params.id; const blogPost = await connection.model('BlogPost').findOne({ _id: id }); if(!blogPost) { return { status: 404, jsonBody: { message: 'Blog post not found' } }; } return { status: 200, jsonBody: { blogPost } }; }; // curl --location 'http://localhost:7071/api/blogpost/6456597918547e37d515bda3' --request DELETE --header 'Content-Type: application/json' --verbose export async function deleteBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function deleteBlogPost processed request for url "${request.url}"`); const id = request.params.id; const blogPostResult = await connection.model('BlogPost').deleteOne({ _id: id }); if(blogPostResult.deletedCount === 0) { return { status: 404, jsonBody: { message: 'Blog post not found' } }; } return { status: 200, jsonBody: { blogPostResult } }; }; app.get('getBlogPost', { route: "blogpost/{id}", authLevel: 'anonymous', handler: getBlogPost }); app.post('postBlogPost', { route: "blogpost", authLevel: 'anonymous', handler: addBlogPost }); app.put('putBlogPost', { route: "blogpost/{id}", authLevel: 'anonymous', handler: updateBlogPost }); app.deleteRequest('deleteBlogPost', { route: "blogpost/{id}", authLevel: 'anonymous', handler: deleteBlogPost });
Uruchom ponownie funkcję lokalną za pomocą debugera. Dostępne są następujące interfejsy API:
deleteBlogPost: [DELETE] http://localhost:7071/api/blogpost/{id} getBlogPost: [GET] http://localhost:7071/api/blogpost/{id} getBlogPosts: [GET] http://localhost:7071/api/blogposts postBlogPost: [POST] http://localhost:7071/api/blogpost putBlogPost: [PUT] http://localhost:7071/api/blogpost/{id}
Użyj interfejsu
blogpost
API (pojedynczego) z polecenia cURL, aby dodać kilka wpisów w blogu.curl -X POST --location 'http://localhost:7071/api/blogpost' --header 'Content-Type: application/json' --data '{"author":"john","title":"my first post", "body":"learn serverless node.js"}' --verbose
Użyj interfejsu
blogposts
API (w liczbie mnogiej) z polecenia cURL, aby uzyskać wpisy w blogu.curl http://localhost:7071/api/blogposts --verbose
Odpowiedź zawiera tablicę JSON pojedynczego wpisu w blogu:
:[{"author":"john","title":"my first post","body":"learn serverless node.js","created":"2024-07-11T21:30:41.688Z","id":"66904f0148b2e4d8a2b9971e"}]}
.
Wyświetlanie wszystkich danych za pomocą rozszerzenia programu Visual Studio Code dla usługi Azure Cosmos DB
W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
W sekcji Zasoby kliknij prawym przyciskiem myszy bazę danych usługi Azure Cosmos DB i wybierz pozycję Odśwież.
Rozwiń węzeł testowej bazy danych i blogpostów kolekcji, aby wyświetlić dokumenty.
Wybierz jeden z wymienionych elementów, aby wyświetlić dane w wystąpieniu usługi Azure Cosmos DB.
Ponowne wdrażanie aplikacji funkcji w celu uwzględnienia kodu bazy danych
- W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
- W sekcji Zasoby kliknij prawym przyciskiem myszy aplikację funkcji platformy Azure i wybierz polecenie Wdróż w aplikacji funkcji.
- W oknie podręcznym z pytaniem, czy na pewno chcesz wdrożyć, wybierz pozycję Wdróż.
- Przed kontynuowaniem poczekaj na zakończenie wdrażania.
Korzystanie z funkcji platformy Azure opartej na chmurze
- Nadal w eksploratorze platformy Azure w obszarze Funkcje wybiera i rozwija funkcję, a następnie węzeł Funkcje , który zawiera listę interfejsów API
- Kliknij prawym przyciskiem myszy jeden z interfejsów API i wybierz pozycję Kopiuj adres URL funkcji.
- Edytuj poprzednie polecenia cURL, aby użyć zdalnego adresu URL zamiast lokalnego adresu URL. Uruchom polecenia, aby przetestować zdalny interfejs API.
Wykonywanie zapytań względem dzienników funkcji platformy Azure
Aby przeszukać dzienniki, użyj witryny Azure Portal.
W programie Visual Studio Code wybierz eksploratora platformy Azure, a następnie w obszarze Funkcje kliknij prawym przyciskiem myszy aplikację funkcji, a następnie wybierz polecenie Otwórz w portalu.
Spowoduje to otwarcie witryny Azure Portal dla funkcji platformy Azure.
W obszarze Ustawienia wybierz pozycję Application Insights, a następnie wybierz pozycję Wyświetl dane usługi Application Insights.
Ten link umożliwia przejście do oddzielnego zasobu metryk utworzonego podczas tworzenia funkcji platformy Azure za pomocą programu Visual Studio Code.
W sekcji Monitorowanie wybierz pozycję Dzienniki. Zamknij wszystkie wyskakujące okna, wybierając ikonę X w prawym górnym rogu wyskakującego okienka, aby go zamknąć.
W okienku Nowe zapytanie 1 na karcie Tabele kliknij dwukrotnie tabelę śladów .
Spowoduje to wprowadzenie zapytania
traces
Kusto w oknie zapytania.Zmień tryb zapytania z trybu prostego na tryb KQL.
Edytuj zapytanie, aby wyszukać dzienniki niestandardowe:
traces | where message startswith "***"
Wybierz Uruchom.
Jeśli dziennik nie wyświetli żadnych wyników, może to być spowodowane kilkuminutowym opóźnieniem między żądaniem HTTP a dostępnością dziennika w usłudze Kusto. Zaczekaj kilka minut i ponownie uruchom zapytanie.
Nie trzeba wykonywać żadnych dodatkowych czynności, aby uzyskać te informacje rejestrowania:
- Kod użył
context.log
funkcji udostępnionej przez platformę funkcji. Za pomocą poleceniacontext
zamiastconsole
funkcji można filtrować rejestrowanie do określonej funkcji indywidualnej. Jest to przydatne, jeśli aplikacja funkcji ma wiele funkcji. - Aplikacja funkcji dodała usługę Application Insights.
- Narzędzie Kusto Query znajduje się w witrynie Azure Portal.
- Możesz wybrać
traces
zamiast nauczyć się pisać zapytanie Kusto, aby uzyskać nawet minimalne informacje z dzienników.
- Kod użył
Dostępny kod źródłowy
Pełny kod źródłowy dla tej aplikacji funkcji platformy Azure:
Czyszczenie zasobów
Ponieważ użyto pojedynczej grupy zasobów, można usunąć wszystkie zasoby, usuwając grupę zasobów.
- W programie Visual Studio Code otwórz eksploratora platformy Azure, wybierając ikonę platformy Azure na pasku bocznym podstawowym lub używając skrótu klawiaturowego (Shift + Alt + A).
- Wyszukaj i wybierz pozycję Azure: Grupuj według grupy zasobów.
- Kliknij prawym przyciskiem myszy pozycję Wybierz grupę zasobów i wybierz polecenie Usuń grupę zasobów.
- Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.
Następny krok
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla