Übung: Ausführen der App

Abgeschlossen

In der vorherigen Übung haben Sie Code für die API Ihres Teams zum Implementieren von Datenbankvorgängen geschrieben. In dieser Übung testen Sie die API, nachdem sie nun mit der Datenbank verbunden ist.

Ausführen der API

  1. Führen Sie die App im Terminalbereich aus:

    dotnet run
    
  2. Überprüfen Sie die Ausgabe der Ausführung der App, und notieren Sie sich die folgenden Informationen:

    • EF Core gibt SQL-Befehle während ihrer Ausführung als info-Protokollereignisse aus.
    • Wenn die Datenbank noch nicht vorhanden ist, werden die Tabellen und Indizes mit CREATE-SQL-Befehlen definiert.
    • Wenn noch kein Seeding für die Datenbank erfolgt ist, werden INSERT-Befehle ausgeführt, um die Seeddaten hinzuzufügen.
    • Aus Sicherheitsgründen werden die Parameterwerte nicht an die Konsole ausgegeben. Sie können diese Einstellung mithilfe von EnableSensitiveDataLogging ändern.
  3. Verwenden Sie SQLite Explorer, um die Datenbank zu untersuchen, für die ein Seeding ausgeführt wurde. Jede Tabelle enthält Daten.

Wechsel zu Swagger

Da die API nun ausgeführt wird, testen Sie sie, um zu ermitteln, ob die Vorgänge wie erwartet funktionieren. Die API ist für die Verwendung von Swagger konfiguriert, um eine Benutzeroberfläche für Tests bereitzustellen. Swagger ist ein Tool, mit dem Sie RESTful-Webdienste entwerfen, erstellen, dokumentieren und verwenden können.

  1. Suchen Sie in der Ausgabe, die nach dem Ausführen der App angezeigt wird, die HTTP-URL, an der die App lauscht. Die Ausgabe sieht etwa folgendermaßen aus:

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5200
    
  2. Um die URL zu öffnen, wählen Sie sie aus, während Sie die STRG-TASTE gedrückt halten. Im Browser wird der Speicherort / für die API geöffnet, die den Text Contoso Pizza management API. Go to /swagger to open the Swagger test UI. zurückgibt.

  3. Fügen Sie in der Adressleiste des Browsers am Ende der URL /swagger ein, und drücken Sie die EINGABETASTE.

Testen von CRUD-Vorgängen

In den folgenden Schritten verwenden Sie die Swagger-Benutzeroberfläche, um die einzelnen API-Vorgänge auf dieselbe Weise wie eine Clientanwendung zu testen. Überprüfen Sie die Datenbank nach jedem Vorgang im SQLite-Explorer, um die Datenbankänderungen in Echtzeit zu verfolgen.

  1. Fordern Sie die vollständige Liste der Pizzas an:

    1. Erweitern Sie unter der Überschrift Pizza den Vorgang GET /Pizza, und wählen Sie dann Jetzt testen aus.
    2. Klicken Sie auf die Schaltfläche Ausführen.

    Die API gibt die Liste der Pizzas im JSON-Format zurück (unter Antworttext).

    [
        {
            "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
        }
        ]
    

    Tipp

    Warum sind die Eigenschaften sauce und toppings gleich NULL? Dieses Ergebnis ist erwartbar, da Sie bei der PizzaService.GetAll-Methode nicht die Include-Erweiterungsmethode verwendet haben, um anzugeben, dass die Navigationseigenschaften geladen werden sollen.

  2. Anfordern einer einzelnen Pizza:

    1. Scrollen Sie nach unten zum Vorgang GET /Pizza{id}, und erweitern Sie ihn. Klicken Sie dann auf Ausprobieren.
    2. Geben Sie im Feld id den Wert 2 ein, und wählen Sie Ausführen aus.

    Die API gibt die Pizza „Hawaii“ zurück. Beachten Sie, dass die Eigenschaften sauce und toppings aufgefüllt werden, weil die Methode PizzaService.GetById die Erweiterungsmethode Include verwendet.

  3. Fügen Sie eine neue Pizza hinzu:

    1. Scrollen Sie nach oben zum Vorgang POST /Pizza (zwischen den soeben verwendeten GET-Vorgängen), und erweitern Sie den Vorgang. Klicken Sie dann auf Ausprobieren.

    2. Fügen Sie im Textfeld Anforderungstext den folgenden JSON-Code ein:

      {
        "name": "BBQ Beef",
        "sauce": {
          "name": "BBQ",
          "isVegan": false
        },
        "toppings": [
          {
            "name": "Smoked Beef Brisket",
            "calories": 250
          }
        ]
      }
      
    3. Wählen Sie Execute(Ausführen).

    Die API gibt die neue Pizza mit der ausgefüllten id-Eigenschaft zurück.

  4. Fügen Sie der BBQ Beef-Pizza einen weiteren Belag hinzu:

    1. Scrollen Sie nach unten zum Vorgang PUT /Pizza{id}/addtopping, und erweitern Sie ihn. Wählen Sie Ausprobieren aus.
    2. Geben Sie im Feld id den Wert 4 ein.
    3. Geben Sie im Feld toppingId den Wert 5 ein.
    4. Klicken Sie auf Ausführen.

    Die API aktualisiert die Pizza und gibt einen Erfolgscode zurück. In der Datenbank wird PizzaTopping ein Datensatz hinzugefügt, der den Belag der Pizza zuordnet.

  5. Ändern Sie die Soße auf der BBQ Beef-Pizza:

    1. Scrollen Sie nach unten zum Vorgang PUT /Pizza{id}/updatesauce, und erweitern Sie ihn. Wählen Sie Ausprobieren aus.
    2. Geben Sie im Feld id den Wert 4 ein.
    3. Geben Sie im Feld sauceId den Wert 2 ein.
    4. Klicken Sie auf Ausführen.

    Die API aktualisiert die Pizza und gibt einen Erfolgscode zurück. In der Datenbank wird der Datensatz Pizza aktualisiert, um der Pizza die neue Sauce zuzuordnen.

  6. Navigieren Sie zum Vorgang GET /Pizza{id}, und fordern Sie die BBQ Beef-Pizza an, indem Sie das Feld id auf 4 festlegen. Klicken Sie dann auf Ausführen. Beachten Sie, dass die Eigenschaften sauce und toppings aufgefüllt werden.

    {
        "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. Sie haben festgestellt, dass eine Pizza mit geräucherter Rinderbrust, Alfredo-Soße und Ananas keine gute Idee ist.

    Löschen Sie die Pizza:

    1. Suchen Sie den Vorgang DELETE /Pizza{id}, und erweitern Sie ihn. Wählen Sie Ausprobieren aus.
    2. Geben Sie im Feld id den Wert 4 ein.
    3. Wählen Sie Execute(Ausführen).

    Die API löscht die Pizza und gibt einen Erfolgscode zurück. In der Datenbank werden der Pizza-Datensatz und die zugehörigen Datensätze in PizzaTopping gelöscht.

  8. Drücken Sie im Terminal, über das die App ausgeführt wird, STRG+C, um die Ausführung der App zu beenden.

Tipp

Sie können mit der App experimentieren. Wenn Sie mit einer neuen Datenbank beginnen möchten, beenden Sie die App, und löschen Sie die Dateien ContosoPizza.db, .db-shm und .db-wal. Führen Sie die App dann erneut aus.

Gut gemacht! Die App arbeitet erwartungsgemäß mit Ihrer Datenbank! In der nächsten Einheit erstellen Sie ein Gerüst für Entitätsmodelle aus einer vorhandenen Datenbank.