Övning – Kör 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 det API som du har anslutit 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 inte är seedad ännu
INSERT
körs kommandon för att lägga till startdata. - För säkerhet upprepas inte parametervärdena i 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 seedade 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 väljer 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 get/pizza-åtgärden och väljer knappen Prova .
- Välj knappen Kör.
API:et returnerar listan med 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 } ]
Dricks
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 ska läsas in.Begär en enda pizza:
- Rulla ned till åtgärden GET /Pizza/{id} och expandera den och välj sedan knappen Prova .
- I id-fältet anger du 2 och väljer sedan 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 använde) och expandera den och välj sedan knappen 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 med egenskapen
id
ifylld.Lägg till en annan topping till BBQ Beef pizza:
- Rulla ned till åtgärden PUT /Pizza/{id}/addtopping och expandera den och välj sedan knappen Prova .
- I ID-fältet 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 toppingen.Ändra såsen på BBQ Beef pizza:
- Rulla ned till åtgärden PUT /Pizza/{id}/updatesauce och expandera den och välj sedan knappen Prova .
- I ID-fältet 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-nötköttspizza 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 insåg precis att en rökt brisketpizza med Alfredo-sås och ananas är en hemsk idé.
Ta bort pizzan:
- Leta upp åtgärden DELETE /Pizza/{id} och expandera den och välj sedan knappen Prova.
- I ID-fältet anger du 4.
- Välj Kör.
API:et tar bort pizzan och returnerar en lyckad kod. I databasen
Pizza
tas posten och de associerade posterna iPizzaTopping
bort.I terminalen med appen som körs väljer du Ctrl+C för att stoppa appen som körs.
Dricks
Du kan experimentera med appen. När du vill börja med en ny databas stoppar du appen och tar bort ContosoPizza.db, .db-shm och .db-wal-filer . Kör sedan appen igen.
Bra jobbat! Appen fungerar som förväntat med din databas! I nästa lektion ska du skapa entitetsmodeller från en befintlig databas.