Oefening - Een web-API-project maken
In deze module wordt de .NET 8.0 SDK gebruikt. Zorg ervoor dat .NET 8.0 is geïnstalleerd door de volgende opdracht uit te voeren in de opdrachtterminal van uw voorkeur:
dotnet --list-sdks
Uitvoer die vergelijkbaar is met het volgende voorbeeld wordt weergegeven:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Zorg ervoor dat er een versie wordt vermeld die begint met 8 . Als er geen wordt vermeld of de opdracht niet wordt gevonden, installeert u de meest recente .NET 8.0 SDK.
Een web-API-project maken en verkennen
Als u een .NET-project wilt instellen voor gebruik met de web-API, gebruiken we Visual Studio Code. Visual Studio Code bevat een geïntegreerde terminal waarmee u eenvoudig een nieuw project kunt maken. Als u geen code-editor wilt gebruiken, kunt u de opdrachten in deze module uitvoeren in een terminal.
Selecteer in Visual Studio Code Bestand>Map Openen.
Maak een nieuwe map met de naam ContosoPizza op de locatie van uw keuze en kies Map selecteren.
Open de geïntegreerde terminal vanuit Visual Studio Code door in het hoofdmenu Weergeven>Terminal te selecteren.
Kopieer en plak de volgende opdracht in het terminalvenster:
dotnet new webapi -controllers -f net8.0Met deze opdracht worden de bestanden gemaakt voor een eenvoudig web-API-project dat gebruikmaakt van controllers, samen met een C#-projectbestand met de naam ContosoPizza.csproj dat een lijst met weersvoorspellingen retourneert. Als er een fout optreedt, controleert u of de .NET 8 SDK is geïnstalleerd.
Belangrijk
Web-API-projecten worden standaard beveiligd met
https. Als u problemen ondervindt, configureert u het ASP.NET Core HTTPS-ontwikkelingscertificaat.Mogelijk ontvangt u een prompt van Visual Studio Code om assets toe te voegen om fouten in het project op te sporen. Selecteer Ja in het dialoogvenster.
De opdracht gebruikt een ASP.NET Core-projectsjabloon, dat als webapi wordt gebruikt om een op C# gebaseerde web-API-project te bouwen. Er wordt een ContosoPizza map gemaakt. Deze map bevat een ASP.NET Core-project dat wordt uitgevoerd op .NET. De naam van het project komt overeen met de naam van de map ContosoPizza.
U hebt nu toegang tot deze bestanden en mappen:
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.csBekijk de volgende bestanden en mappen:
Name Beschrijving Controllers/ Bevat de klassen met openbare methoden die beschikbaar zijn gemaakt als HTTP-eindpunten. Program.cs Hiermee configureert u services en de HTTP-aanvraagpijplijn van de app en bevat u het beheerde toegangspunt van de app. ContosoPizza.csproj Bevat metagegevens van de configuratie voor het project. ContosoPizza.http Bevat configuratie om REST API's rechtstreeks vanuit Visual Studio Code te testen.
De web-API bouwen en testen
Voer de volgende .NET Core CLI-opdracht uit in de opdrachtshell:
dotnet runDe bovenstaande opdracht:
- Hiermee zoekt u het projectbestand in de huidige map.
- Hiermee worden de vereiste projectafhankelijkheden voor dit project opgehaald en geïnstalleerd.
- Compileert de projectcode.
- Host de web-API met de ASP.NET Core Kestrel-webserver op zowel een HTTP- als HTTPS-eindpunt.
Een poort van 5000 tot 5300 is geselecteerd voor HTTP en van 7000 tot 7300 voor HTTPS wanneer het project wordt gemaakt. U kunt de poorten die u tijdens de ontwikkeling gebruikt eenvoudig wijzigen door het launchSettings.json-bestand van het project te bewerken. In deze module wordt de beveiligde
localhostURL gebruikt die begint methttps.De uitvoer moet er ongeveer als volgt uitzien, wat aangeeft dat uw app wordt uitgevoerd:
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: DevelopmentAls u deze app op uw eigen computer uitvoert, kunt u een browser doorsturen naar de HTTPS-koppeling die wordt weergegeven in de uitvoer (in het voorgaande geval
https://localhost:7294) om de resulterende pagina weer te geven. Onthoud deze poort, omdat u deze in de module gebruikt waar{PORT}wordt gebruikt.Belangrijk
Controleer de terminaluitvoer als u onverwacht gedrag tegenkomt. Als de build mislukt of andere fouten optreden, helpt de informatie van het logboekbestand u bij het oplossen van problemen. Wanneer u wijzigingen aanbrengt in de code, moet u de web-API stoppen door Ctrl+C op het toetsenbord te selecteren en de
dotnet runopdracht opnieuw uit te voeren.Open een webbrowser en ga naar:
https://localhost:{PORT}/weatherforecastU ziet de JSON-uitvoer die vergelijkbaar is met dit voorbeeld:
[ { "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" }, // ... ]
Optioneel: Verkennen met .http bestanden
Opgenomen in het project is ContosoPizza.http, een bestand dat wordt gebruikt om API-eindpunten te testen via een standaardindeling.
.http bestanden worden ondersteund in verschillende integrated development environments (IDE's), waaronder Visual Studio en in Visual Studio Code, waarbij de REST Client-extensie is geïnstalleerd.
Open het bestand ContosoPizza.http.
In sommige IDE's is dit bestand vooraf geconfigureerd met de @ContosoPizza_HostAddress-variabelen en een GET commando dat /weatherforecast/ aanroept en application/json accepteert.
Als het aanwezig is in uw bestand, selecteert u de opdracht Verzonden aanvraag boven de GET die een aanvraag naar de actieve service verzendt.
Als u deze opdracht aanroept, wordt een antwoordvenster geopend met uitvoer die vergelijkbaar is met wat we in de browser hebben gezien:
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" }, // .. ]
Optioneel: API's verkennen met OPDRACHTREGEL-HTTP REPL
Open een nieuwe geïntegreerde terminal vanuit Visual Studio Code door Terminalin het hoofdmenu en voer vervolgens de volgende opdracht uit:
dotnet tool install -g Microsoft.dotnet-httpreplMet de voorgaande opdracht installeert u het opdrachtregelprogramma .NET HTTP Read-Eval-Print Loop (REPL) dat u gebruikt om HTTP-aanvragen te maken voor de web-API.
Maak verbinding met de web-API door de volgende opdracht uit te voeren:
httprepl https://localhost:{PORT}U kunt ook de volgende opdracht op elk gewenst moment uitvoeren terwijl
HttpRepldeze wordt uitgevoerd:connect https://localhost:{PORT}Tip
Als het
HttpReplhulpprogramma waarschuwt dat er geen OpenAPI-beschrijving kan worden gevonden, is de meest waarschijnlijke oorzaak een niet-vertrouwd ontwikkelingscertificaat.HttpReplvereist een vertrouwde verbinding. Voordat u kunt doorgaan, moetu uw systeem configureren om het dev-certificaat te vertrouwen metdotnet dev-certs https --trustVerken beschikbare eindpunten door de volgende opdracht uit te voeren:
lsDe voorgaande opdracht detecteert alle API's die beschikbaar zijn op het verbonden eindpunt en vermeldt deze, zoals in de volgende uitvoer:
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]Ga naar het
WeatherForecasteindpunt door de volgende opdracht uit te voeren:cd WeatherForecastDe voorgaande opdracht toont een uitvoer van beschikbare API's voor het
WeatherForecasteindpunt:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]Voer een
GETaanvraag inHttpReplmet behulp van de volgende opdracht:getMet de voorgaande opdracht wordt een
GETaanvraag uitgevoerd die vergelijkbaar is met het eindpunt in de browser: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" }, // .. ]Beëindig de huidige
HttpReplsessie met behulp van de volgende opdracht:exitGa terug naar de
dotnetterminal in de vervolgkeuzelijst in Visual Studio Code. Sluit de web-API af door Ctrl+C op het toetsenbord te selecteren.
Nu u de web-API hebt gemaakt, kunnen we deze aanpassen aan de behoeften van de pizza-web-API.