Oefening: de app uitvoeren
In de vorige oefening hebt u code geschreven voor de API van uw team om databasebewerkingen te implementeren. In deze oefening test u de API die u hebt verbonden met de database.
De API uitvoeren
Voer in het terminalvenster de app uit:
dotnet run
Controleer de uitvoer van het uitvoeren van de app en noteer de volgende informatie:
- EF Core echot SQL-opdrachten als
info
logboekevenementen wanneer ze worden uitgevoerd. - Als de database nog niet bestaat, worden de tabellen en indexen gedefinieerd met behulp van SQL-opdrachten
CREATE
. - Als de database nog niet is seeded,
INSERT
worden opdrachten uitgevoerd om de seed-gegevens toe te voegen. - Voor beveiliging worden de parameterwaarden niet naar de console herhaald. U kunt deze instelling wijzigen met EnableSensitiveDataLogging.
- EF Core echot SQL-opdrachten als
Gebruik SQLite Explorer om de seeded database te verkennen. Elke tabel bevat gegevens.
Ga naar Swagger
Nu de API wordt uitgevoerd, test u de API om te zien of de bewerkingen werken zoals verwacht. De API is geconfigureerd voor het gebruik van Swagger om een testgebruikersinterface te bieden. Swagger is een hulpprogramma waarmee u RESTful-webservices kunt ontwerpen, bouwen, documenteren en gebruiken.
Zoek in de uitvoer die wordt weergegeven nadat u de app hebt uitgevoerd de HTTP-URL waar de app luistert. De uitvoer ziet er ongeveer als volgt uit:
info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5200
Als u de URL wilt openen, selecteert u deze terwijl u Ctrl ingedrukt houdt. De browser wordt geopend op de
/
locatie voor de API, die de tekst retourneertContoso Pizza management API. Go to /swagger to open the Swagger test UI.
Voeg in de adresbalk van de browser toe
/swagger
aan het einde van de URL en selecteer Enter.
CRUD-bewerkingen testen
In de volgende stappen gebruikt u de Swagger-gebruikersinterface om alle bewerkingen van de API te testen zoals een clienttoepassing dat zou doen. Controleer na elke bewerking de database in SQLite Explorer om de wijzigingen in de database te zien wanneer deze zich voordoen.
Vraag de volledige lijst met pizza's aan:
- Vouw onder de kop Pizza de bewerking GET /Pizza uit en selecteer de knop Uitproberen .
- Selecteer de knop Uitvoeren .
De API retourneert de lijst met pizza's als JSON (onder antwoordtekst).
[ { "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 } ]
Tip
Waarom zijn de
sauce
eigenschappentoppings
null? Dit resultaat wordt verwacht, omdat u in dePizzaService.GetAll
methode niet deInclude
extensiemethode hebt gebruikt om op te geven dat de navigatie-eigenschappen moeten worden geladen.Vraag één pizza aan:
- Schuif omlaag naar de bewerking GET /Pizza/{id} en vouw deze uit en selecteer vervolgens de knop Uitproberen .
- Voer in het id-veld 2 in en selecteer Vervolgens Uitvoeren.
De API retourneert de pizza 'Hawaiiaan'. U ziet dat de
sauce
entoppings
eigenschappen worden ingevuld omdat dePizzaService.GetById
methode gebruikmaakt van deInclude
extensiemethode.Voeg een nieuwe pizza toe:
Schuif omhoog naar de POST/Pizza-bewerking (tussen de GET-bewerkingen die u hebt gebruikt) en vouw deze uit en selecteer vervolgens de knop Uitproberen .
Plak de volgende JSON in het tekstvak Aanvraagtekst :
{ "name": "BBQ Beef", "sauce": { "name": "BBQ", "isVegan": false }, "toppings": [ { "name": "Smoked Beef Brisket", "calories": 250 } ] }
Selecteer Uitvoeren.
De API retourneert de nieuwe pizza met de
id
eigenschap ingevuld.Voeg nog een topping toe aan de BBQ Beef pizza:
- Schuif omlaag naar de PUT /Pizza/{id}/addtopping-bewerking en vouw deze uit en selecteer vervolgens de knop Uitproberen .
- Voer in het id-veld 4 in.
- Voer in het veld toppingId 5 in.
- Selecteer Uitvoeren.
De API werkt de pizza bij en retourneert een succescode. In de database wordt een record toegevoegd om de pizza te
PizzaTopping
koppelen aan de topping.Wijzig de saus op de BBQ Beef pizza:
- Schuif omlaag naar de bewerking PUT /Pizza/{id}/updatesauce en vouw deze uit en selecteer vervolgens de knop Uitproberen .
- Voer in het id-veld 4 in.
- Voer in het veld sauceId 2 in.
- Selecteer Uitvoeren.
De API werkt de pizza bij en retourneert een succescode. In de database wordt de
Pizza
record bijgewerkt om de pizza te koppelen aan de nieuwe saus.Ga terug naar de GET /Pizza/{id} -bewerking en vraag de BBQ Beef pizza aan door het id-veld in te stellen op 4. Selecteer vervolgens Uitvoeren. U ziet dat de
sauce
entoppings
eigenschappen zijn ingevuld.{ "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 } ] }
Je besefte net een gerookte borstelige pizza met Alfredo-saus en ananas is een vreselijk idee.
Verwijder de pizza:
- Zoek de bewerking DELETE /Pizza/{id} en vouw deze uit en selecteer vervolgens de knop Uitproberen .
- Voer in het id-veld 4 in.
- Selecteer Uitvoeren.
De API verwijdert de pizza en retourneert een geslaagde code. In de database worden de
Pizza
record en de bijbehorende recordsPizzaTopping
verwijderd.Selecteer Ctrl+C in de terminal met de actieve app om de actieve app te stoppen.
Tip
U kunt experimenteren met de app. Wanneer u wilt beginnen met een nieuwe database, stopt u de app en verwijdert u de ContosoPizza.db, .db-shm- en .db-wal-bestanden . Voer de vervolgens opnieuw app uit.
Goed gedaan. De app werkt zoals verwacht met uw database. In de volgende eenheid maakt u entiteitsmodellen van een bestaande database.