Övning – Skapa ett webb-API-projekt

Slutförd

Den här modulen använder .NET 8.0 SDK. Kontrollera att du har .NET 8.0 installerat genom att köra följande kommando i önskad kommandoterminal:

dotnet --list-sdks

Utdata som liknar följande exempel visas:

6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]

Kontrollera att en version som börjar med 8 visas. Om inget visas eller om kommandot inte hittas installerar du den senaste .NET 8.0 SDK:t.

Skapa och utforska ett webb-API-projekt

För att konfigurera ett .NET-projekt för att arbeta med webb-API:et använder vi Visual Studio Code. Visual Studio Code innehåller en integrerad terminal som gör det enkelt att skapa ett nytt projekt. Om du inte vill använda en kodredigerare kan du köra kommandona i den här modulen i en terminal.

  1. I Visual Studio Code väljer du File>Open Folder (Arkiv > Öppna mapp).

  2. Skapa en ny mapp med namnet ContosoPizza på valfri plats och välj sedan Välj mapp.

  3. Öppna den integrerade terminalen från Visual Studio Code genom att välja Visa>Terminal på huvudmenyn.

  4. Kopiera och klistra in följande kommando i terminalfönstret:

    dotnet new webapi -controllers -f net8.0
    

    Det här kommandot skapar filerna för ett grundläggande webb-API-projekt som använder kontrollanter, tillsammans med en C#-projektfil med namnet ContosoPizza.csproj som returnerar en lista över väderprognoser. Om du får ett fel kontrollerar du att .NET 8 SDK är installerat.

    Viktigt!

    Webb-API-projekt skyddas med https som standard. Om du har problem konfigurerar du ASP.NET Core HTTPS-utvecklingscertifikat.

    Du kan få en uppmaning från Visual Studio Code om att lägga till tillgångar för att felsöka projektet. Välj Ja i dialogrutan.

    Kommandot använder en ASP.NET Core-projektmall som alias webapi för att skapa ett C#-baserat webb-API-projekt. En ContosoPizza katalog skapas. Den här katalogen innehåller ett ASP.NET Core-projekt som körs på .NET. Projektnamnet matchar katalognamnet ContosoPizza.

    Nu bör du ha åtkomst till dessa filer och kataloger:

    -| Controllers
    -| obj
    -| Properties
    -| appsettings.Development.json
    -| appsettings.json
    -| ContosoPizza.csproj
    -| ContosoPizza.http
    -| Program.cs
    -| WeatherForecast.cs
    
  5. Granska följande filer och kataloger:

    Name beskrivning
    Controllers/ Innehåller klasser med offentliga metoder som exponeras som HTTP-slutpunkter.
    Program.cs Konfigurerar tjänster och appens HTTP-begärandepipeline och innehåller appens hanterade startpunkt.
    ContosoPizza.csproj Innehåller konfigurationsmetadata för projektet.
    ContosoPizza.http Innehåller konfiguration för att testa REST-API:er direkt från Visual Studio Code.

Skapa och testa webb-API:et

  1. Kör följande .NET Core CLI-kommando i kommandogränssnittet:

    dotnet run
    

    Kommandot ovan:

    • Letar upp projektfilen i den aktuella katalogen.
    • Hämtar och installerar alla nödvändiga projektberoenden för det här projektet.
    • Kompilerar projektkoden.
    • Är värd för webb-API:et med webbservern ASP.NET Core Kestrel på både en HTTP- och HTTPS-slutpunkt.

    En port från 5000 till 5300 har valts för HTTP och från 7 000 till 7 300 för HTTPS när projektet skapas. Du kan enkelt ändra de portar som du använder under utvecklingen genom att redigera projektets launchSettings.json fil. Den här modulen använder den säkra localhost URL:en som börjar med https.

    Du bör få utdata som liknar följande, vilket anger att appen körs:

    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        
    

    Om du kör den här appen på din egen dator kan du dirigera en webbläsare till HTTPS-länken som visas i utdata (i föregående fall https://localhost:7294) för att visa den resulterande sidan. Kom ihåg den här porten eftersom du använder den i hela modulen där {PORT} används.

    Viktigt!

    Kontrollera terminalutdata om du stöter på något oväntat beteende. Om bygget misslyckas eller om andra fel inträffar hjälper loggfilens information dig att felsöka. När du gör ändringar i koden måste du stoppa webb-API:et genom att välja CTRL+C på tangentbordet och köra kommandot igen dotnet run .

  2. Öppna en webbläsare och gå till:

    https://localhost:{PORT}/weatherforecast
    

    Du bör se JSON-utdata som liknar det här exemplet:

    [
        {
        "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"
        },
        // ...
    ]
    

Valfritt: Utforska med .http filer

ContosoPizza.http ingår i projektet, en fil som används för att testa API-slutpunkter via ett standardformat. .http filer stöds i flera integrerade utvecklingsmiljöer (IDE:er), inklusive Visual Studio och inuti Visual Studio Code med REST-klienttillägget installerat.

  1. Öppna filen ContosoPizza.http.

    I vissa IDE:er är den här filen förkonfigurerad med @ContosoPizza_HostAddress variabler och ett GET-kommando som anropar /weatherforecast/ som accepterar application/json.

  2. Om den finns i filen väljer du kommandot Skickad begäran ovanför GET som skickar en begäran till den tjänst som körs.

    När du anropar det här kommandot öppnas ett svarsfönster med utdata som liknar det vi såg i webbläsaren:

    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"
        },
        // ..
    ]
    

Valfritt: Utforska API:er med KOMMANDORAD HTTP REPL

  1. Öppna en ny integrerad terminal från Visual Studio Code genom att välja Terminal>Ny terminal på huvudmenyn och kör sedan följande kommando:

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    Föregående kommando installerar kommandoradsverktyget .NET HTTP Read-Eval-Print Loop (REPL) som du använder för att göra HTTP-begäranden till webb-API:et.

  2. Anslut till webb-API:et genom att köra följande kommando:

    httprepl https://localhost:{PORT}
    

    Du kan också köra följande kommando när som helst medan HttpRepl det körs:

    connect https://localhost:{PORT}
    

    Dricks

    Om verktyget HttpRepl varnar Det går inte att hitta en OpenAPI-beskrivning är den troligaste orsaken ett ej betrott utvecklingscertifikat. HttpRepl kräver en betrodd anslutning. Innan du kan fortsätta måste du konfigurera systemet att lita på utvecklingscertifikatet meddotnet dev-certs https --trust

  3. Utforska tillgängliga slutpunkter genom att köra följande kommando:

    ls
    

    Föregående kommando identifierar alla API:er som är tillgängliga på den anslutna slutpunkten och visar dem, som i följande utdata:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. Gå till slutpunkten genom att WeatherForecast köra följande kommando:

    cd WeatherForecast
    

    Föregående kommando visar utdata från tillgängliga API:er för WeatherForecast slutpunkten:

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. Gör en GET begäran med HttpRepl hjälp av följande kommando:

    get
    

    Föregående kommando gör en GET begäran som liknar att gå till slutpunkten i webbläsaren:

    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"
        },
        // ..
    ]
    
  6. Avsluta den aktuella HttpRepl sessionen med hjälp av följande kommando:

    exit
    
  7. Gå tillbaka till terminalen dotnet i listrutan i Visual Studio Code. Stäng av webb-API:et genom att välja CTRL+C på tangentbordet.

Nu när du har skapat webb-API:et kan vi ändra det så att det uppfyller behoven i pizzawebb-API:et.