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.0
Met 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 maakt gebruik van een ASP.NET Core-projectsjabloon die is gealiaseerd als webapi een web-API-project op basis van C#. 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.cs
Bekijk 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 run
De 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
localhost
URL 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: Development
Als 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}
deze 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 run
opdracht opnieuw uit te voeren.Open een webbrowser en ga naar:
https://localhost:{PORT}/weatherforecast
U 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-opdrachtdie /weatherforecast/ aanroept die toepassing/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 Terminal> te selecteren in het hoofdmenu en voer vervolgens de volgende opdracht uit:
dotnet tool install -g Microsoft.dotnet-httprepl
Met 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
HttpRepl
deze wordt uitgevoerd:connect https://localhost:{PORT}
Tip
Als het
HttpRepl
hulpprogramma waarschuwt dat er geen OpenAPI-beschrijving kan worden gevonden, is de meest waarschijnlijke oorzaak een niet-vertrouwd ontwikkelingscertificaat.HttpRepl
vereist een vertrouwde verbinding. Voordat u kunt doorgaan, moetu uw systeem configureren om het dev-certificaat te vertrouwen metdotnet dev-certs https --trust
Verken beschikbare eindpunten door de volgende opdracht uit te voeren:
ls
De 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
WeatherForecast
eindpunt door de volgende opdracht uit te voeren:cd WeatherForecast
De voorgaande opdracht toont een uitvoer van beschikbare API's voor het
WeatherForecast
eindpunt:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]
Voer een
GET
aanvraag inHttpRepl
met behulp van de volgende opdracht:get
Met de voorgaande opdracht wordt een
GET
aanvraag 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
HttpRepl
sessie met behulp van de volgende opdracht:exit
Ga terug naar de
dotnet
terminal 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.