Ćwiczenie — uruchamianie aplikacji
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
W okienku terminalu uruchom aplikację:
dotnet run
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.
- Program EF Core echo polecenia SQL jako
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.
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
Aby otworzyć adres URL, zaznacz go podczas przytrzymywania Ctrl. Przeglądarka zostanie otwarta w
/
lokalizacji interfejsu API, która zwraca tekstContoso Pizza management API. Go to /swagger to open the Swagger test UI.
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.
Zażądaj pełnej listy pizz:
- W obszarze nagłówka Pizza rozwiń operację GET /Pizza i wybierz przycisk Wypróbuj .
- 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
itoppings
mają wartość null? Ten wynik jest oczekiwany, ponieważ w metodziePizzaService.GetAll
nie użytoInclude
metody rozszerzenia, aby określić, że właściwości nawigacji powinny zostać załadowane.Zażądaj jednej pizzy:
- Przewiń w dół do operacji GET /Pizza/{id} i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
- 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żywaInclude
metody rozszerzenia.Dodaj nową pizzę:
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 .
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 } ] }
Wybierz polecenie Wykonaj.
Interfejs API zwraca nową pizzę z wypełniona właściwością
id
.Dodaj kolejny dodatek do pizzy grill wołowiny:
- Przewiń w dół do operacji PUT /Pizza/{id}/addtopping i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
- W polu id wprowadź wartość 4.
- W polu toppingId wprowadź wartość 5.
- Wybierz polecenie Wykonaj.
Interfejs API aktualizuje pizzę i zwraca kod powodzenia. W bazie danych do skojarzenia pizzy z toppingiem dodawany jest
PizzaTopping
rekord.Zmień sos na pizzy grill wołowiny:
- Przewiń w dół do operacji PUT /Pizza/{id}/updatesauce i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
- W polu id wprowadź wartość 4.
- W polu sauceId wprowadź wartość 2.
- 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.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 itoppings
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 } ] }
Właśnie zdałeś sobie sprawę, że wędzona pizza brisket z sosem Alfredo i ananasem jest straszny pomysł.
Usuń pizzę:
- Znajdź operację DELETE /Pizza/{id} i rozwiń ją, a następnie wybierz przycisk Wypróbuj .
- W polu id wprowadź wartość 4.
- Wybierz polecenie Wykonaj.
Interfejs API usuwa pizzę i zwraca kod powodzenia. W bazie danych
Pizza
rekord i skojarzone rekordy w programiePizzaTopping
są usuwane.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.