Gyakorlat – Webes API-projekt létrehozása
Ez a modul a .NET 8.0 SDK-t használja. Győződjön meg arról, hogy telepítve van a .NET 8.0, ha az alábbi parancsot futtatja az előnyben részesített parancsterminálban:
dotnet --list-sdks
A következő példához hasonló kimenet jelenik meg:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Győződjön meg arról, hogy az első 8 verzió szerepel a listában. Ha egyik sem szerepel a listában, vagy a parancs nem található, telepítse a legújabb .NET 8.0 SDK-t.
Webes API-projekt létrehozása és felfedezése
Ha .NET-projektet szeretne beállítani a webes API használatára, a Visual Studio Code-ot használjuk. A Visual Studio Code tartalmaz egy integrált terminált, amely megkönnyíti egy új projekt létrehozását. Ha nem szeretne kódszerkesztőt használni, futtathatja a parancsokat ebben a modulban egy terminálban.
A Visual Studio Code-ban válassza a Fájl>Mappa megnyitása elemet.
Hozzon létre egy contosoPizza nevű új mappát a kívánt helyen, majd válassza a Mappa kiválasztása lehetőséget.
Nyissa meg az integrált terminált a Visual Studio Code-ból a Nézet>Terminál elemet választva a főmenüből.
Másolja és illessze be a következő parancsot a terminálablakba:
dotnet new webapi -controllers -f net8.0Ez a parancs létrehoz egy vezérlőket használó alapszintű webes API-projekt fájljait, valamint egy ContosoPizza.csproj nevű C#-projektfájlt, amely az időjárás-előrejelzések listáját adja vissza. Ha hibaüzenetet kap, győződjön meg arról, hogy telepítve van a .NET 8 SDK .
Fontos
A webes API-projektek alapértelmezés szerint védettek
https. Ha problémákat tapasztal, konfigurálja a ASP.NET Core HTTPS fejlesztési tanúsítványt.Előfordulhat, hogy a Visual Studio Code kéri, hogy adjon hozzá eszközöket a projekt hibakereséséhez. Válassza az Igen lehetőséget a párbeszédpanelen.
A parancs egy C#-alapú webes API-projekt létrehozásához használt webapi ASP.NET Core-projektsablont használ. Létrejön egy ContosoPizza könyvtár. Ez a könyvtár egy .NET-en futó ASP.NET Core-projektet tartalmaz. A projekt neve megegyezik a ContosoPizza könyvtáréval.
Most már hozzá kell férnie ezekhez a fájlokhoz és könyvtárakhoz:
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.csFigyelje meg a következő fájlokat és könyvtárakat:
Név Leírás Controllers/ HTTP-végpontokként elérhető nyilvános metódusokkal rendelkező osztályokat tartalmaz. Program.cs Konfigurálja a szolgáltatásokat és az alkalmazás HTTP-kérési folyamatát, és tartalmazza az alkalmazás felügyelt belépési pontját. ContosoPizza.csproj A projekt konfigurációs metaadatait tartalmazza. ContosoPizza.http A REST API-k közvetlenül a Visual Studio Code-ból való tesztelésére alkalmas konfigurációt tartalmaz.
A webes API létrehozása és tesztelése
Futtassa a következő .NET Core CLI-parancsot a parancsfelületen:
dotnet runA fenti parancs a következőket hajtja végre:
- Megkeresi a projektfájlt az aktuális könyvtárban.
- Lekéri és telepíti a projekt szükséges projektfüggőségeit.
- Lefordítja a projektkódot.
- A webes API-t a ASP.NET Core Kestrel webkiszolgálóval üzemelteti HTTP- és HTTPS-végponton egyaránt.
A HTTP-hez 5000 és 5300 közötti port, HTTPS esetén pedig 7000 és 7300 közötti port van kiválasztva a projekt létrehozásakor. A fejlesztés során használt portokat egyszerűen módosíthatja a projekt launchSettings.json fájljának szerkesztésével. Ez a modul a következővel
localhostkezdődő biztonságoshttpsURL-címet használja: .Az alábbihoz hasonló kimenetet kell kapnia, amely azt jelzi, hogy az alkalmazás fut:
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: DevelopmentHa ezt az alkalmazást a saját gépén futtatja, a kimenetben (az előző esetben
https://localhost:7294) megjelenő HTTPS-hivatkozásra irányíthatja a böngészőt az eredményként kapott oldal megtekintéséhez. Ne feledje ezt a portot, mert azt a modulban használja, ahol{PORT}használják.Fontos
Ellenőrizze a terminál kimenetét, ha váratlan viselkedést tapasztal. Ha a build sikertelen vagy más hibák lépnek fel, a naplófájl adatai segítenek a hibaelhárításban. A kód módosításakor le kell állítania a webes API-t a CTRL+C billentyűkombinációval a billentyűzeten, majd újra kell futtatnia a
dotnet runparancsot.Nyisson meg egy webböngészőt, és lépjen a következőre:
https://localhost:{PORT}/weatherforecastAz alábbi példához hasonló JSON-kimenetnek kell megjelennie:
[ { "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" }, // ... ]
Nem kötelező: Felfedezés fájlokkal .http
A projekt része a ContosoPizza.http fájl, amely az API-végpontok szabványos formátumon keresztüli tesztelésére szolgál.
.http a fájlok számos integrált fejlesztési környezetben (IDE-ban) támogatottak, beleértve a Visual Studiót és a Visual Studio Code-ban a REST-ügyfélbővítményt.
Nyissa meg a ContosoPizza.http fájlt.
Egyes azonosítókban ez a fájl előre konfigurálva van a @ContosoPizza_HostAddress változókkal és egy get parancstal, amely meghívja a /weatherforecast/ parancsot, amely elfogadja az alkalmazást/json-t.
Ha megtalálható a fájlban, válassza az Elküldött kérés parancsot a GET fölött, amely kérést küld a futó szolgáltatásnak.
A parancs meghívása egy válaszablakot nyit meg a böngészőben látotthoz hasonló kimenettel:
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" }, // .. ]
Nem kötelező: API-k felfedezése a HTTP REPL parancssorral
Nyisson meg egy új integrált terminált a Visual Studio Code-ból a terminála főmenüben, majd futtassa a következő parancsot:
dotnet tool install -g Microsoft.dotnet-httpreplAz előző parancs telepíti a .NET HTTP Read-Eval-Print Loop (REPL) parancssori eszközt, amellyel HTTP-kéréseket küld a webes API-nak.
Csatlakozzon a webes API-hoz a következő parancs futtatásával:
httprepl https://localhost:{PORT}Másik lehetőségként futtassa a következő parancsot bármikor, miközben
HttpReplfut:connect https://localhost:{PORT}Tipp.
Ha az
HttpRepleszköz figyelmezteti , hogy nem található OpenAPI-leírás, a legvalószínűbb ok egy nem megbízható fejlesztési tanúsítvány.HttpReplmegbízható kapcsolatot igényel. A folytatáshoz konfigurálnia kella rendszert, hogy megbízzanak a fejlesztői tanúsítványbandotnet dev-certs https --trustAz alábbi parancs futtatásával fedezze fel az elérhető végpontokat:
lsAz előző parancs észleli a csatlakoztatott végponton elérhető összes API-t, és felsorolja őket, ahogyan az alábbi kimenetben látható:
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]Lépjen a
WeatherForecastvégpontra a következő parancs futtatásával:cd WeatherForecastAz előző parancs a végponthoz elérhető API-k kimenetét jeleníti meg
WeatherForecast:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]Küldjön
GETbe egy kéréstHttpRepla következő paranccsal:getAz előző parancs a böngészőben a végponthoz hasonló kérést
GETküld: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" }, // .. ]Az alábbi paranccsal fejezheti be az aktuális
HttpReplmunkamenetet:exitTérjen vissza a
dotnetterminálhoz a Visual Studio Code legördülő listájában. Állítsa le a webes API-t a CTRL+C billentyűkombinációval a billentyűzeten.
Most, hogy létrehozta a webes API-t, módosíthatjuk a pizza webes API igényeinek megfelelően.