Ćwiczenie — tworzenie projektu internetowego interfejsu API

Ukończone

W tym module jest używany zestaw .NET 8.0 SDK. Upewnij się, że masz zainstalowany program .NET 8.0, uruchamiając następujące polecenie w preferowanym terminalu poleceń:

dotnet --list-sdks

Zostanie wyświetlone dane wyjściowe podobne do następującego przykładu:

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

Upewnij się, że na liście znajduje się wersja rozpoczynająca się od 8 . Jeśli żadna z nich nie znajduje się na liście lub polecenie nie zostanie znalezione, zainstaluj najnowszy zestaw SDK platformy .NET 8.0.

Tworzenie i eksplorowanie projektu internetowego interfejsu API

Aby skonfigurować projekt platformy .NET do pracy z internetowym interfejsem API, używamy programu Visual Studio Code. Program Visual Studio Code zawiera zintegrowany terminal, który ułatwia tworzenie nowego projektu. Jeśli nie chcesz używać edytora kodu, możesz uruchomić polecenia w tym module w terminalu.

  1. W programie Visual Studio Code wybierz pozycję File (Plik)>Open Folder (Otwórz folder).

  2. Utwórz nowy folder o nazwie ContosoPizza w wybranej lokalizacji, a następnie wybierz pozycję Wybierz folder.

  3. Otwórz zintegrowany terminal z programu Visual Studio Code, wybierając pozycję View (Widok)>Terminal z menu głównego.

  4. Skopiuj następujące polecenie i wklej je w oknie terminalu:

    dotnet new webapi -controllers -f net8.0
    

    To polecenie tworzy pliki dla podstawowego projektu internetowego interfejsu API, który używa kontrolerów wraz z plikiem projektu C# o nazwie ContosoPizza.csproj , który zwraca listę prognoz pogody. Jeśli wystąpi błąd, upewnij się, że masz zainstalowany zestaw .NET 8 SDK .

    Ważne

    Projekty internetowego interfejsu API są domyślnie zabezpieczone https . Jeśli masz problemy, skonfiguruj certyfikat dewelopera ASP.NET Core HTTPS.

    Może zostać wyświetlony monit z programu Visual Studio Code o dodanie zasobów w celu debugowania projektu. Wybierz pozycję Tak w oknie dialogowym.

    Polecenie używa aliasu szablonu projektu ASP.NET Core jako webapi szkieletu projektu internetowego interfejsu API opartego na języku C#. Zostanie ContosoPizza utworzony katalog. Ten katalog zawiera projekt ASP.NET Core uruchomiony na platformie .NET. Nazwa projektu jest zgodna z nazwą katalogu ContosoPizza.

    Teraz należy mieć dostęp do tych plików i katalogów:

    -| Controllers
    -| obj
    -| Properties
    -| appsettings.Development.json
    -| appsettings.json
    -| ContosoPizza.csproj
    -| ContosoPizza.http
    -| Program.cs
    -| WeatherForecast.cs
    
  5. Przyjrzyj się następującym plikom i katalogom:

    Nazwa/nazwisko opis
    Controllers/ Zawiera klasy z metodami publicznymi uwidocznionymi jako punkty końcowe HTTP.
    Program.cs Konfiguruje usługi i potok żądania HTTP aplikacji oraz zawiera zarządzany punkt wejścia aplikacji.
    ContosoPizza.csproj Zawiera metadane konfiguracji projektu.
    ContosoPizza.http Zawiera konfigurację do testowania interfejsów API REST bezpośrednio z poziomu programu Visual Studio Code.

Kompilowanie i testowanie internetowego interfejsu API

  1. Uruchom następujące polecenie interfejsu wiersza polecenia platformy .NET Core w powłoce poleceń:

    dotnet run
    

    Poprzednie polecenie:

    • Lokalizuje plik projektu w bieżącym katalogu.
    • Pobiera i instaluje wszystkie wymagane zależności projektu dla tego projektu.
    • Kompiluje kod projektu.
    • Hostuje internetowy interfejs API za pomocą serwera internetowego ASP.NET Core Kestrel zarówno w punkcie końcowym HTTP, jak i HTTPS.

    Port z zakresu od 5000 do 5300 jest wybierany dla protokołu HTTP, a od 7000 do 7300 dla protokołu HTTPS po utworzeniu projektu. Porty używane podczas programowania można łatwo zmienić, edytując plik launchSettings.json projektu. W tym module jest używany bezpieczny localhost adres URL rozpoczynający się od https.

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących, co wskazuje, że aplikacja jest uruchomiona:

    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        
    

    Jeśli używasz tej aplikacji na własnej maszynie, możesz kierować przeglądarkę do linku HTTPS wyświetlanego w danych wyjściowych (w poprzednim przypadku https://localhost:7294), aby wyświetlić wynikową stronę. Pamiętaj ten port, ponieważ używasz go w całym module, w którym {PORT} jest używany.

    Ważne

    Sprawdź dane wyjściowe terminalu, jeśli wystąpi nieoczekiwane zachowanie. Jeśli kompilacja zakończy się niepowodzeniem lub wystąpią inne błędy, informacje pliku dziennika ułatwiają rozwiązywanie problemów. Podczas wprowadzania zmian w kodzie należy zatrzymać internetowy interfejs API, wybierając CTRL+C na klawiaturze i ponownie uruchamiając dotnet run polecenie.

  2. Otwórz przeglądarkę internetową i przejdź do:

    https://localhost:{PORT}/weatherforecast
    

    Powinny zostać wyświetlone dane wyjściowe JSON podobne do tego przykładu:

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

Opcjonalnie: Eksplorowanie za pomocą .http plików

W projekcie znajduje się contosoPizza.http , plik używany do testowania punktów końcowych interfejsu API za pomocą standardowego formatu. .http pliki są obsługiwane w kilku zintegrowanych środowiskach projektowych (IDE), w tym w programie Visual Studio i w programie Visual Studio Code z zainstalowanym rozszerzeniem klienta REST.

  1. Otwórz plik ContosoPizza.http.

    W niektórych środowiskach IDE ten plik jest wstępnie skonfigurowany za pomocą zmiennych @ContosoPizza_HostAddress i polecenia GET wywołującego polecenie /weatherforecast/ , które akceptuje plik application/json.

  2. Jeśli znajduje się on w pliku, wybierz polecenie Wysłane żądanie powyżej polecenia GET , które wysyła żądanie do uruchomionej usługi.

    Wywołanie tego polecenia otwiera okno odpowiedzi z danymi wyjściowymi podobnymi do tego, co widzieliśmy w przeglądarce:

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

Opcjonalnie: Eksplorowanie interfejsów API przy użyciu protokołu REPL HTTP wiersza polecenia

  1. Otwórz nowy zintegrowany terminal z programu Visual Studio Code, wybierając pozycję Terminal>Nowy terminal z menu głównego, a następnie uruchom następujące polecenie:

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    Poprzednie polecenie instaluje narzędzie wiersza polecenia .NET HTTP Read-Eval-Print Loop (REPL) używane do wykonywania żądań HTTP do internetowego interfejsu API.

  2. Połącz się z internetowym interfejsem API, uruchamiając następujące polecenie:

    httprepl https://localhost:{PORT}
    

    Alternatywnie uruchom następujące polecenie w dowolnym momencie, gdy HttpRepl jest uruchomione:

    connect https://localhost:{PORT}
    

    Napiwek

    HttpRepl Jeśli narzędzie wyświetli ostrzeżenie Nie można odnaleźć opisu interfejsu OpenAPI, najbardziej prawdopodobną przyczyną jest niezaufany certyfikat programowania. HttpRepl wymaga zaufanego połączenia. Przed kontynuowaniem należy skonfigurować system tak, aby ufał certyfikatowi deweloperskiemudotnet dev-certs https --trust

  3. Zapoznaj się z dostępnymi punktami końcowymi, uruchamiając następujące polecenie:

    ls
    

    Poprzednie polecenie wykrywa wszystkie interfejsy API dostępne w połączonym punkcie końcowym i wyświetla je w następujący sposób:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. Przejdź do punktu końcowego WeatherForecast , uruchamiając następujące polecenie:

    cd WeatherForecast
    

    Poprzednie polecenie przedstawia dane wyjściowe dostępnych interfejsów API dla punktu końcowego WeatherForecast :

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. GET Utwórz żądanie za HttpRepl pomocą następującego polecenia:

    get
    

    Poprzednie polecenie wysyła GET żądanie podobne do przechodzenia do punktu końcowego w przeglądarce:

    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. Zakończ bieżącą HttpRepl sesję przy użyciu następującego polecenia:

    exit
    
  7. Wróć do terminalu na dotnet liście rozwijanej w programie Visual Studio Code. Zamknij internetowy interfejs API, wybierając CTRL+C na klawiaturze.

Po utworzeniu internetowego interfejsu API możemy zmodyfikować go tak, aby spełniał wymagania internetowego interfejsu API pizzy.