Övning – Köra appen

Slutförd

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

  1. Kör appen i terminalfönstret:

    dotnet run
    
  2. 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.
  3. 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.

  1. 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
    
  2. 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 texten Contoso Pizza management API. Go to /swagger to open the Swagger test UI.

  3. 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.

  1. Begär en fullständig lista över pizzor:

    1. Under rubriken Pizza expanderar du åtgärden GET /Pizza och väljer Prova.
    2. 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 och toppings null? Det här resultatet förväntas eftersom du i PizzaService.GetAll metoden inte använde Include tilläggsmetoden för att ange att navigeringsegenskaperna skulle läsas in.

  2. Begär en enda pizza:

    1. Rulla ned till åtgärden GET /Pizza{id} och expandera den. Välj sedan Prova.
    2. I fältet ID anger du 2 och väljer Kör.

    API:et returnerar pizzan "Hawaiian". Observera att sauce egenskaperna och toppings fylls i eftersom PizzaService.GetById metoden använder Include tilläggsmetoden.

  3. Lägg till en ny pizza:

    1. 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.

    2. 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
          }
        ]
      }
      
    3. Välj Kör.

    API:et returnerar den nya pizzan id med egenskapen ifylld.

  4. Lägg till en annan topping till BBQ Beef pizza:

    1. Rulla ned till åtgärden PUT /Pizza{id}/addtopping och expandera den. Välj Prova.
    2. I fältet ID anger du 4.
    3. I fältet toppingId anger du 5.
    4. 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.

  5. Ändra såsen på BBQ Beef pizza:

    1. Rulla ned till åtgärden PUT /Pizza{id}/updatesauce och expandera den. Välj Prova.
    2. I fältet ID anger du 4.
    3. I fältet sauceId anger du 2.
    4. 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.

  6. 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 och toppings ä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
            }
        ]
    }
    
  7. Du har insett att en rökt bringa pizza med Alfredo sås och ananas är en hemsk idé.

    Ta bort pizzan:

    1. Leta reda på åtgärden DELETE /Pizza{id} och expandera den. Välj Prova.
    2. I fältet ID anger du 4.
    3. 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.

  8. 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.