Övning – Kör 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 det API som du har anslutit 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 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.
  3. 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.

  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 väljer 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 get/pizza-åtgärden och väljer knappen Prova .
    2. 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 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 ska läsas in.

  2. Begär en enda pizza:

    1. Rulla ned till åtgärden GET /Pizza/{id} och expandera den och välj sedan knappen Prova .
    2. I id-fältet anger du 2 och väljer sedan 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 använde) och expandera den och välj sedan knappen 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 med egenskapen id 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 och välj sedan knappen Prova .
    2. I ID-fältet 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 toppingen.

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

    1. Rulla ned till åtgärden PUT /Pizza/{id}/updatesauce och expandera den och välj sedan knappen Prova .
    2. I ID-fältet 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-nötköttspizza 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 insåg precis att en rökt brisketpizza med Alfredo-sås och ananas är en hemsk idé.

    Ta bort pizzan:

    1. Leta upp åtgärden DELETE /Pizza/{id} och expandera den och välj sedan knappen Prova.
    2. I ID-fältet anger du 4.
    3. Välj Kör.

    API:et tar bort pizzan och returnerar en lyckad kod. I databasen Pizza tas posten och de associerade posterna i PizzaTopping bort.

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