Cvičení – vytvoření projektu webového rozhraní API
Tento modul používá sadu .NET 8.0 SDK. Spuštěním následujícího příkazu v upřednostňovaném příkazovém terminálu se ujistěte, že máte nainstalované rozhraní .NET 8.0:
dotnet --list-sdks
Zobrazí se výstup podobný následujícímu příkladu:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Ujistěte se, že je uvedená verze, na 8
které začíná. Pokud žádný není uvedený nebo příkaz nebyl nalezen, nainstalujte nejnovější sadu .NET 8.0 SDK.
Vytvoření a prozkoumání projektu webového rozhraní API
K nastavení projektu .NET pro práci s webovým rozhraním API používáme Visual Studio Code. Visual Studio Code obsahuje integrovaný terminál, který usnadňuje vytváření nového projektu. Pokud nechcete používat editor kódu, můžete příkazy v tomto modulu spustit v terminálu.
V nástroji Visual Studio Code vyberte File (Soubor)>Open Folder (Otevřít složku).
Vytvořte novou složku s názvem ContosoPizza v umístění podle vašeho výběru a pak zvolte Vybrat složku.
Ve Visual Studio Code otevřete integrovaný terminál výběrem View (Zobrazit) >Terminal (Terminál) z hlavní nabídky.
V okně terminálu zkopírujte a vložte následující příkaz:
dotnet new webapi -controllers -f net8.0
Tento příkaz vytvoří soubory pro základní projekt webového rozhraní API, který používá kontrolery, spolu se souborem projektu C# s názvem ContosoPizza.csproj , který vrátí seznam předpovědí počasí. Pokud se zobrazí chyba, ujistěte se, že máte nainstalovanou sadu .NET 8 SDK .
Důležité
Projekty webového rozhraní API jsou ve výchozím nastavení zabezpečené
https
. Pokud máte problémy, nakonfigurujte ASP.NET základní vývojový certifikát HTTPS.Z editoru Visual Studio Code se může zobrazit výzva k přidání prostředků pro ladění projektu. V dialogovém okně vyberte Ano .
Tento příkaz používá alias šablony projektu ASP.NET Core, který webapi slouží k vygenerování projektu webového rozhraní API založeného na jazyce C#. Vytvoří se ContosoPizza adresář. Tento adresář obsahuje projekt ASP.NET Core spuštěný v .NET. Název projektu odpovídá názvu adresáře ContosoPizza.
Teď byste měli mít přístup k těmto souborům a adresářům:
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.cs
Prozkoumejte následující soubory a adresáře:
Název Popis Controllers/ Obsahuje třídy s veřejnými metodami vystavenými jako koncové body HTTP. Program.cs Konfiguruje služby a kanál požadavku HTTP aplikace a obsahuje spravovaný vstupní bod aplikace. ContosoPizza.csproj Obsahuje konfigurační metadata projektu. ContosoPizza.http Obsahuje konfiguraci pro testování rozhraní REST API přímo ze sady Visual Studio Code.
Sestavení a testování webového rozhraní API
V příkazovém prostředí spusťte následující příkaz .NET Core CLI:
dotnet run
Předchozí příkaz:
- Vyhledá soubor projektu v aktuálním adresáři.
- Načte a nainstaluje všechny požadované závislosti projektu pro tento projekt.
- Zkompiluje kód projektu.
- Hostuje webové rozhraní API s webovým serverem ASP.NET Core Kestrel na koncovém bodu HTTP i HTTPS.
Port z 5000 na 5300 je vybraný pro protokol HTTP a při vytvoření projektu je z 7000 na 7300 pro HTTPS. Porty, které používáte při vývoji, můžete snadno změnit úpravou souboru launchSettings.json projektu. Tento modul používá zabezpečenou
localhost
adresu URL, která začínáhttps
.Měl by se zobrazit výstup podobný následujícímu, což znamená, že je vaše aplikace spuštěná:
Building... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:7294 info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5118 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development
Pokud tuto aplikaci spouštíte na vlastním počítači, můžete prohlížeč nasměrovat na odkaz HTTPS zobrazený ve výstupu (v předchozím případě
https://localhost:7294
) a zobrazit tak výslednou stránku. Tento port si zapamatujte, protože ho použijete v celém modulu, ve kterém{PORT}
se používá.Důležité
Pokud narazíte na neočekávané chování, zkontrolujte výstup terminálu. Pokud sestavení selže nebo dojde k jiným chybám, informace o souboru protokolu vám pomůžou s řešením potíží. Při provádění změn kódu budete muset webové rozhraní API zastavit tak, že na klávesnici vyberete CTRL+C a znovu spustíte
dotnet run
příkaz.Otevřete webový prohlížeč a přejděte na:
https://localhost:{PORT}/weatherforecast
Měl by se zobrazit výstup JSON podobný tomuto příkladu:
[ { "date": "2021-11-09T20:36:01.4678814+00:00", "temperatureC": 33, "temperatureF": 91, "summary": "Scorching" }, { "date": "2021-11-09T20:36:01.4682337+00:00", "temperatureC": -8, "temperatureF": 18, "summary": "Cool" }, // ... ]
Volitelné: Prozkoumání souborů .http
Součástí projektu je ContosoPizza.http, soubor, který se používá k testování koncových bodů rozhraní API ve standardním formátu. .http
Soubory jsou podporovány v několika integrovaných vývojových prostředích (ID) včetně sady Visual Studio a uvnitř editoru Visual Studio Code s nainstalovaným rozšířením REST Client.
Otevřete soubor ContosoPizza.http.
V některých prostředích IDEs je tento soubor předem nakonfigurovaný s proměnnými @ContosoPizza_HostAddress a příkazem GET, který volá /weatherforecast/, který přijímá application/json.
Pokud je v souboru, vyberte příkaz Sent Request nad get, který odešle požadavek do spuštěné služby.
Voláním tohoto příkazu se otevře okno odpovědi s výstupem podobným tomu, co jsme viděli v prohlížeči:
HTTP/1.1 200 OK Connection: close Content-Type: application/json; charset=utf-8 Date: Wed, 17 Jan 2024 16:46:40 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": "2024-01-18", "temperatureC": -2, "temperatureF": 29, "summary": "Warm" }, { "date": "2024-01-19", "temperatureC": 24, "temperatureF": 75, "summary": "Chilly" }, // .. ]
Volitelné: Prozkoumání rozhraní API pomocí HTTP REPL příkazového řádku
V editoru Visual Studio Code otevřete nový integrovaný terminál tak, že v hlavní nabídce vyberete Terminál>nový terminál a pak spustíte následující příkaz:
dotnet tool install -g Microsoft.dotnet-httprepl
Předchozí příkaz nainstaluje nástroj příkazového řádku .NET HTTP Read-Eval-Print Loop (REPL), který použijete k provádění požadavků HTTP na webové rozhraní API.
Spuštěním následujícího příkazu se připojte k webovému rozhraní API:
httprepl https://localhost:{PORT}
Případně můžete při spuštění kdykoli
HttpRepl
spustit následující příkaz:connect https://localhost:{PORT}
Tip
Pokud nástroj
HttpRepl
upozorní, že nelze najít popis OpenAPI, nejpravděpodobnější příčinou je nedůvěryhodný vývojový certifikát.HttpRepl
vyžaduje důvěryhodné připojení. Než budete moct pokračovat, musíte nakonfigurovat systém tak, aby důvěřoval vývojovému certifikátu.dotnet dev-certs https --trust
Prozkoumejte dostupné koncové body spuštěním následujícího příkazu:
ls
Předchozí příkaz zjistí všechna rozhraní API dostupná v připojeném koncovém bodu a zobrazí je jako v následujícím výstupu:
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]
Spuštěním následujícího příkazu přejděte ke koncovému
WeatherForecast
bodu:cd WeatherForecast
Předchozí příkaz zobrazí výstup dostupných rozhraní API pro
WeatherForecast
koncový bod:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]
GET
Pomocí následujícího příkazu vytvořte požadavekHttpRepl
:get
Předchozí příkaz vytvoří
GET
požadavek podobný koncovému bodu v prohlížeči:HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 17:31:43 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": 4/3/2021 10:31:44 AM, "temperatureC": 13, "temperatureF": 55, "summary": "Sweltering" }, { "date": 4/4/2021 10:31:44 AM, "temperatureC": -13, "temperatureF": 9, "summary": "Warm" }, // .. ]
Aktuální relaci ukončete
HttpRepl
pomocí následujícího příkazu:exit
Vraťte se do terminálu v rozevíracím seznamu v editoru
dotnet
Visual Studio Code. Vypněte webové rozhraní API tak, že na klávesnici vyberete CTRL+C.
Teď, když jste vytvořili webové rozhraní API, můžeme ho upravit tak, aby vyhovoval potřebám webového rozhraní API pro pizzu.