Övning – Köra appen
I föregående övning skrev du kod för ditt teams API för att implementera databasåtgärder. I den här övningen testar du API:et nu när det är anslutet till databasen.
Köra API:et
Kör appen i terminalfönstret:
dotnet run
Granska utdata från att köra appen och notera följande information:
- EF Core ekar SQL-kommandon som
info
logghändelser när de körs. - Om databasen inte redan finns definieras tabellerna och indexen med hjälp av SQL-kommandon
CREATE
. - Om databasen ännu inte har seedats
INSERT
körs kommandon för att lägga till startdata. - För säkerhet skickas inte parametervärdena till konsolen. Du kan ändra den här inställningen med hjälp av EnableSensitiveDataLogging.
- EF Core ekar SQL-kommandon som
Använd SQLite Explorer för att utforska den fördefinierade databasen. Varje tabell har data.
Gå till Swagger
Nu när API:et körs testar du API:et för att se om åtgärderna fungerar som förväntat. API:et är konfigurerat för att använda Swagger för att tillhandahålla ett testgränssnitt. Swagger är ett verktyg som hjälper dig att utforma, skapa, dokumentera och använda RESTful-webbtjänster.
I utdata som visas när du har kört appen letar du reda på HTTP-URL:en där appen lyssnar. Utdata ser ut ungefär som i följande exempel:
info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5200
Om du vill öppna URL:en markerar du den medan du håller ctrl. Webbläsaren öppnas till
/
platsen för API:et, som returnerar textenContoso Pizza management API. Go to /swagger to open the Swagger test UI.
I webbläsarens adressfält lägger du till
/swagger
i slutet av URL:en och väljer Retur.
Testa CRUD-åtgärder
I följande steg använder du Swagger-användargränssnittet för att testa var och en av API:ets åtgärder på det sätt som ett klientprogram skulle göra. Efter varje åtgärd kontrollerar du databasen i SQLite Explorer för att se databasändringarna när de inträffar.
Begär en fullständig lista över pizzor:
- Under rubriken Pizza expanderar du åtgärden GET /Pizza och väljer Prova.
- Välj knappen Kör .
API:et returnerar listan över pizzor som JSON (under Svarstext).
[ { "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 } ]
Tips
Varför är
sauce
egenskaperna ochtoppings
null? Det här resultatet förväntas eftersom du iPizzaService.GetAll
metoden inte användeInclude
tilläggsmetoden för att ange att navigeringsegenskaperna skulle läsas in.Begär en enda pizza:
- Rulla ned till åtgärden GET /Pizza{id} och expandera den. Välj sedan Prova.
- I fältet ID anger du
2
och väljer Kör.
API:et returnerar pizzan "Hawaiian". Observera att
sauce
egenskaperna ochtoppings
fylls i eftersomPizzaService.GetById
metoden använderInclude
tilläggsmetoden.Lägg till en ny pizza:
Rulla upp till åtgärden POST /Pizza (som finns mellan de GET-åtgärder som du precis använde) och expandera den. Välj sedan Prova.
I textrutan Begärandetext klistrar du in följande JSON:
{ "name": "BBQ Beef", "sauce": { "name": "BBQ", "isVegan": false }, "toppings": [ { "name": "Smoked Beef Brisket", "calories": 250 } ] }
Välj Kör.
API:et returnerar den nya pizzan
id
med egenskapen ifylld.Lägg till en annan topping till BBQ Beef pizza:
- Rulla ned till åtgärden PUT /Pizza{id}/addtopping och expandera den. Välj Prova.
- I fältet ID anger du 4.
- I fältet toppingId anger du 5.
- Välj Kör.
API:et uppdaterar pizzan och returnerar en lyckad kod. I databasen läggs en post till
PizzaTopping
för att associera pizzan med toppningen.Ändra såsen på BBQ Beef pizza:
- Rulla ned till åtgärden PUT /Pizza{id}/updatesauce och expandera den. Välj Prova.
- I fältet ID anger du 4.
- I fältet sauceId anger du 2.
- Välj Kör.
API:et uppdaterar pizzan och returnerar en lyckad kod. I databasen
Pizza
uppdateras posten för att associera pizzan med den nya såsen.Gå tillbaka till åtgärden GET /Pizza{id} och begär BBQ Beef Pizza genom att ange ID-fältet till 4. Välj sedan Kör. Observera att
sauce
egenskaperna ochtoppings
är ifyllda.{ "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 } ] }
Du har insett att en rökt bringa pizza med Alfredo sås och ananas är en hemsk idé.
Ta bort pizzan:
- Leta reda på åtgärden DELETE /Pizza{id} och expandera den. Välj Prova.
- I fältet ID anger du 4.
- Välj Kör.
API:et tar bort pizzan och returnerar en lyckad kod. Posten och de associerade posterna i tas bort i
PizzaTopping
databasenPizza
.I terminalen med appen som körs väljer du Ctrl+C för att stoppa appen som körs.
Tips
Du kan experimentera med appen. När du vill börja med en ny databas stoppar du appen och tar bort filerna ContosoPizza.db, .db-shm och .db-wal . Kör sedan appen igen.
Bra jobbat! Appen arbetar som förväntat med din databas! I nästa lektion ska du autogenerera entitetsmodeller från en befintlig databas.