Ćwiczenie — uruchamianie aplikacji

Ukończone

W poprzednim ćwiczeniu napisaliśmy kod dla interfejsu API zespołu w celu zaimplementowania operacji bazy danych. W tym ćwiczeniu przetestujesz interfejs API połączony z bazą danych.

Uruchamianie interfejsu API

  1. W okienku terminalu uruchom aplikację:

    dotnet run
    
  2. Sprawdź dane wyjściowe z uruchamiania aplikacji i zanotuj następujące informacje:

    • Program EF Core echo polecenia SQL jako info zdarzenia dziennika podczas wykonywania.
    • Jeśli baza danych jeszcze nie istnieje, tabele i indeksy są definiowane przy użyciu poleceń SQL CREATE .
    • Jeśli baza danych nie jest jeszcze rozstawiona, polecenia są wykonywane w INSERT celu dodania danych inicjowania.
    • W przypadku zabezpieczeń wartości parametrów nie są powtarzane do konsoli. To ustawienie można zmienić za pomocą polecenia EnableSensitiveDataLogging.
  3. Eksplorowanie inicjowanej bazy danych za pomocą eksploratora SQLite. Każda tabela zawiera dane.

Przejdź do programu Swagger

Teraz, gdy interfejs API jest uruchomiony, przetestuj interfejs API, aby sprawdzić, czy operacje działają zgodnie z oczekiwaniami. Interfejs API jest skonfigurowany do używania struktury Swagger do udostępniania testowego interfejsu użytkownika. Swagger to narzędzie, które ułatwia projektowanie, kompilowanie, dokumentowanie i korzystanie z usług internetowych RESTful.

  1. W danych wyjściowych wyświetlanych po uruchomieniu aplikacji znajdź adres URL HTTP, pod którym aplikacja nasłuchuje. Dane wyjściowe wyglądają podobnie do następującego przykładu:

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5200
    
  2. Aby otworzyć adres URL, zaznacz go podczas przytrzymywania Ctrl. Przeglądarka zostanie otwarta w / lokalizacji interfejsu API, która zwraca tekst Contoso Pizza management API. Go to /swagger to open the Swagger test UI.

  3. Na pasku adresu przeglądarki dodaj /swagger na końcu adresu URL i wybierz Enter.

Testowanie operacji CRUD

W poniższych krokach użyjesz interfejsu użytkownika struktury Swagger, aby przetestować poszczególne operacje interfejsu API w taki sposób, w jaki aplikacja kliencka będzie. Po każdej operacji sprawdź bazę danych w eksploratorze SQLite, aby zobaczyć zmiany bazy danych w miarę ich wprowadzania.

  1. Zażądaj pełnej listy pizz:

    1. W obszarze nagłówka Pizza rozwiń operację GET /Pizza i wybierz przycisk Wypróbuj .
    2. Wybierz przycisk Wykonaj.

    Interfejs API zwraca listę pizz jako kod JSON (w obszarze Treść odpowiedzi).

    [
        {
            "id": 1,
            "name": "Meat Lovers",
            "sauce": null,
            "toppings": null
        },
        {
            "id": 2,
            "name": "Hawaiian",
            "sauce": null,
            "toppings": null
        },
        {
            "id": 3,
            "name": "Alfredo Chicken",
            "sauce": null,
            "toppings": null
        }
        ]
    

    Napiwek

    Dlaczego właściwości sauce i toppings mają wartość null? Ten wynik jest oczekiwany, ponieważ w metodzie PizzaService.GetAll nie użyto Include metody rozszerzenia, aby określić, że właściwości nawigacji powinny zostać załadowane.

  2. Zażądaj jednej pizzy:

    1. Przewiń w dół do operacji GET /Pizza/{id} i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
    2. W polu id wprowadź wartość 2, a następnie wybierz pozycję Wykonaj.

    Interfejs API zwraca pizzę "Hawajskie". Zwróć uwagę, że właściwości i toppings są wypełniane, sauce ponieważ PizzaService.GetById metoda używa Include metody rozszerzenia.

  3. Dodaj nową pizzę:

    1. Przewiń w górę do operacji POST /Pizza (znajdującej się między użytymi operacjami GET ), a następnie rozwiń ją, a następnie wybierz przycisk Wypróbuj .

    2. W polu tekstowym Treść żądania wklej następujący kod JSON:

      {
        "name": "BBQ Beef",
        "sauce": {
          "name": "BBQ",
          "isVegan": false
        },
        "toppings": [
          {
            "name": "Smoked Beef Brisket",
            "calories": 250
          }
        ]
      }
      
    3. Wybierz polecenie Wykonaj.

    Interfejs API zwraca nową pizzę z wypełniona właściwością id .

  4. Dodaj kolejny dodatek do pizzy grill wołowiny:

    1. Przewiń w dół do operacji PUT /Pizza/{id}/addtopping i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
    2. W polu id wprowadź wartość 4.
    3. W polu toppingId wprowadź wartość 5.
    4. Wybierz polecenie Wykonaj.

    Interfejs API aktualizuje pizzę i zwraca kod powodzenia. W bazie danych do skojarzenia pizzy z toppingiem dodawany jest PizzaTopping rekord.

  5. Zmień sos na pizzy grill wołowiny:

    1. Przewiń w dół do operacji PUT /Pizza/{id}/updatesauce i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
    2. W polu id wprowadź wartość 4.
    3. W polu sauceId wprowadź wartość 2.
    4. Wybierz polecenie Wykonaj.

    Interfejs API aktualizuje pizzę i zwraca kod powodzenia. W bazie danych rekord jest aktualizowany w Pizza celu skojarzenia pizzy z nowym sosem.

  6. Wróć do operacji GET /Pizza/{id} i zażądaj pizzy grill wołowiny, ustawiając pole id na 4. Następnie wybierz pozycję Wykonaj. Zwróć uwagę, że sauce właściwości i toppings są wypełniane.

    {
        "id": 4,
        "name": "BBQ Beef",
        "sauce": {
            "id": 2,
            "name": "Alfredo",
            "isVegan": false
        },
        "toppings": [
            {
            "id": 5,
            "name": "Pineapple",
            "calories": 75
            },
            {
            "id": 6,
            "name": "Smoked Beef Brisket",
            "calories": 250
            }
        ]
    }
    
  7. Właśnie zdałeś sobie sprawę, że wędzona pizza brisket z sosem Alfredo i ananasem jest straszny pomysł.

    Usuń pizzę:

    1. Znajdź operację DELETE /Pizza/{id} i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
    2. W polu id wprowadź wartość 4.
    3. Wybierz polecenie Wykonaj.

    Interfejs API usuwa pizzę i zwraca kod powodzenia. W bazie danych Pizza rekord i skojarzone rekordy w programie PizzaTopping są usuwane.

  8. W terminalu z uruchomioną aplikacją wybierz Ctrl+C, aby zatrzymać uruchomioną aplikację.

Napiwek

Możesz eksperymentować z aplikacją. Za każdym razem, gdy chcesz zacząć od nowej bazy danych, zatrzymaj aplikację i usuń ContosoPizza.db, .db-shm i pliki wal .db . Następnie ponownie uruchom aplikację.

Dobra robota! Aplikacja współpracuje z bazą danych zgodnie z oczekiwaniami! W następnej lekcji tworzysz szkielet modeli jednostek z istniejącej bazy danych.