Exercice - Exécuter l’application

Effectué

Dans l’exercice précédent, vous avez écrit du code pour l’API de votre équipe afin d’implémenter des opérations de base de données. Dans cet exercice, vous allez tester l’API qui est désormais connectée à la base de données.

Exécuter l’API

  1. Dans le volet du terminal, exécutez l’application :

    dotnet run
    
  2. Inspectez la sortie générée par l’exécution de l’application et notez les informations suivantes :

    • EF Core répercute les commandes SQL en tant qu’événements de journal info au fur et à mesure de leur exécution.
    • Si la base de données n’existe pas encore, les tables et les index sont définis à l’aide de commandes SQL CREATE.
    • Si la base de données n’a pas encore été amorcée, des commandes INSERT sont exécutées pour ajouter les données seed.
    • Pour la sécurité, les valeurs des paramètres ne sont pas répercutées sur la console. Vous pouvez modifier ce paramètre en utilisant EnableSensitiveDataLogging.
  3. Utilisez SQLite Explorer pour explorer la base de données amorcée. Chaque table contient des données.

Accéder à Swagger

Maintenant que l’API est en cours d’exécution, testez-la pour voir si les opérations fonctionnent comme prévu. L’API est configurée pour utiliser Swagger qui fournira l’interface utilisateur de test. Swagger est un outil qui permet de concevoir, générer, documenter et consommer des services web RESTful.

  1. Dans la sortie qui s’affiche après l’exécution de l’application, recherchez l’URL HTTP où l’application écoute. La sortie doit ressembler à celle-ci :

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5200
    
  2. Pour ouvrir l’URL, sélectionnez-la tout en maintenant la touche Ctrl enfoncée. Le navigateur s’ouvre à l’emplacement / de l’API, qui retourne le texte Contoso Pizza management API. Go to /swagger to open the Swagger test UI.

  3. Dans la barre d’adresse du navigateur, ajoutez /swagger à la fin de l’URL et sélectionnez Entrée.

Tester les opérations CRUD

Dans les étapes suivantes, vous allez utiliser l’interface utilisateur Swagger pour tester chacune des opérations de l’API de la même façon qu’une application cliente. Après chaque opération, inspectez la base de données dans SQLite Explorer pour voir les modifications à mesure qu’elles se produisent.

  1. Demandez la liste complète de pizzas :

    1. Sous l’en-tête Pizza, développez l’opération GET /Pizza et sélectionnez Try it out.
    2. Sélectionnez le bouton Exécuter.

    L’API retourne la liste des pizzas au format JSON (sous Response body).

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

    Conseil

    Pourquoi les propriétés sauce et toppings sont-elles nulles ? Ce résultat est attendu, car dans la méthode PizzaService.GetAll, vous n’avez pas utilisé la méthode d’extension Include pour spécifier le chargement des propriétés de navigation.

  2. Demandez une seule pizza :

    1. Faites défiler l’écran vers le bas jusqu’à l’opération GET /Pizza{id} et développez-la. Ensuite, sélectionnez Try it out.
    2. Dans le champ id, entrez 2 et sélectionnez Execute.

    L’API retourne la pizza « Hawaïenne  ». Notez que les propriétés sauce et toppings sont remplies, car la méthode PizzaService.GetById utilise la méthode d’extension Include.

  3. Ajoutez une nouvelle pizza :

    1. Faites défiler l’écran vers le haut jusqu’à l’opération POST /Pizza (située entre les opérations GET que vous venez d’utiliser) et développez-la. Ensuite, sélectionnez Try it out.

    2. Dans la zone de texte Request body, collez le code JSON suivant :

      {
        "name": "BBQ Beef",
        "sauce": {
          "name": "BBQ",
          "isVegan": false
        },
        "toppings": [
          {
            "name": "Smoked Beef Brisket",
            "calories": 250
          }
        ]
      }
      
    3. Sélectionnez Exécuter.

    L’API retourne la nouvelle pizza avec la propriété id renseignée.

  4. Ajoutez une autre garniture à la pizza BBQ Beef :

    1. Faites défiler l’écran vers le bas jusqu’à l’opération PUT /Pizza{id}/addtopping et développez-la. Sélectionnez Essayer.
    2. Dans le champ id, entrez 4.
    3. Dans le champ toppingId, entrez 5.
    4. Sélectionnez Exécuter.

    L’API met à jour la pizza et retourne un code de réussite. Dans la base de données, un enregistrement est ajouté à PizzaTopping pour associer la pizza à la garniture.

  5. Changez de sauce de la pizza BBQ Beef :

    1. Faites défiler l’écran vers le bas jusqu’à l’opération PUT /Pizza{id}/updatesauce et développez-la. Sélectionnez Essayer.
    2. Dans le champ id, entrez 4.
    3. Dans le champ sauceId, entrez 2.
    4. Sélectionnez Exécuter.

    L’API met à jour la pizza et retourne un code de réussite. Dans la base de données, l’enregistrement Pizza est mis à jour pour associer la pizza à la nouvelle sauce.

  6. Revenez à l’opération GET /Pizza{id} et demandez la pizza BBQ Beef en définissant le champ id sur 4. Sélectionnez ensuite Execute. Notez que les propriétés sauce et toppings sont renseignées.

    {
        "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. Vous réalisez qu’une pizza garnie de poitrine fumée, de sauce Alfredo et d’ananas est une très mauvaise idée.

    Supprimez la pizza :

    1. Recherchez l’opération DELETE /Pizza{id} et développez-la. Sélectionnez Essayer.
    2. Dans le champ id, entrez 4.
    3. Sélectionnez Exécuter.

    L’API supprime la pizza et retourne un code de réussite. Dans la base de données, l’enregistrement Pizza et les enregistrements associés dans PizzaTopping sont supprimés.

  8. Dans le terminal avec l’application en cours d’exécution, sélectionnez Ctrl+C pour arrêter l’application en cours d’exécution.

Conseil

Vous pouvez faire des tests avec l’application. Chaque fois que vous souhaitez démarrer avec une nouvelle base de données, arrêtez l’application et supprimez les fichiers ContosoPizza.db, .db-shm et .db-wal. Ensuite, relancez l’application.

Beau travail ! L’application fonctionne avec votre base de données comme prévu ! Dans l’unité suivante, vous allez générer automatiquement des modèles d’entité à partir d’une base de données existante.