Esercizio - Eseguire l'app

Completato

Nell'esercizio precedente è stato scritto codice per l'API del team per implementare le operazioni di database. In questo esercizio verrà testata l'API connessa al database.

Eseguire l'API

  1. Nel riquadro del terminale eseguire l'app:

    dotnet run
    
  2. Esaminare l'output dell'esecuzione dell'app e prendere nota delle informazioni seguenti:

    • EF Core ritrasmette i comandi SQL sotto forma di eventi di log info durante l'esecuzione.
    • Se il database non esiste già, le tabelle e gli indici sono definiti usando i comandi CREATE di SQL.
    • Se il database non è ancora stato inizializzato, i comandi INSERT vengono eseguiti per aggiungere i dati di inizializzazione.
    • Per motivi di sicurezza, i valori dei parametri non vengono ritrasmessi alla console. È possibile modificare questa impostazione usando EnableSensitiveDataLogging.
  3. Usare SQLite Explorer per esplorare il database di cui è stato effettuato il seeding. Ogni tabella contiene dati.

Passare a Swagger

Ora che l'API è in esecuzione, testare l'API per verificare se le operazioni funzionano come previsto. L'API è configurata per l'uso di Swagger per fornire un'interfaccia utente di test. Swagger è uno strumento che consente di progettare, compilare, documentare e usare servizi Web RESTful.

  1. Nell'output visualizzato dopo l'esecuzione dell'app trovare l'URL HTTP in cui l'app è in ascolto. L'output è simile al seguente esempio:

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5200
    
  2. Per aprire l'URL, selezionarlo tenendo premuto il tasto CTRL. Il browser viene aperto sulla posizione / dell'API, che restituisce il testo Contoso Pizza management API. Go to /swagger to open the Swagger test UI.

  3. Nella barra degli indirizzi del browser aggiungere /swagger alla fine dell'URL e premere INVIO.

Testare le operazioni CRUD

Nei passaggi seguenti verrà usata l'interfaccia utente di Swagger per testare ognuna delle operazioni dell'API esattamente come farebbe un'applicazione client. Dopo ogni operazione esaminare il database in SQLite Explorer per visualizzare le modifiche del database non appena si vengono apportate.

  1. Richiedere l'elenco completo delle pizze:

    1. Nell'intestazione Pizza espandere l'operazione GET /Pizza e selezionare il pulsante Prova.
    2. Selezionare il pulsante Esegui.

    L'API restituisce l'elenco di pizze in formato JSON (nel Corpo della risposta).

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

    Suggerimento

    Perché le proprietà sauce e toppings sono Null? Questo risultato è previsto, in quanto nel metodo PizzaService.GetAll non è stato usato il metodo di estensione Include per specificare che le proprietà di navigazione devono essere caricate.

  2. Richiedere una pizza singola:

    1. Scorrere verso il basso fino all'operazione GET /Pizza/{id} ed espanderla, quindi selezionare il pulsante Prova.
    2. Nel campo id immettere 2 e quindi selezionare Esegui.

    L'API restituisce la pizza "Hawaiian". Tenere presente che le proprietà sauce e toppings vengono popolate perché il metodo PizzaService.GetById usa il metodo di estensione Include.

  3. Aggiungere una nuova pizza:

    1. Scorrere fino all'operazione POST /Pizza (che si trova tra le operazioni GET usate) ed espanderla, quindi selezionare il pulsante Prova.

    2. Nella casella di testo Corpo della richiesta incollare il codice JSON seguente:

      {
        "name": "BBQ Beef",
        "sauce": {
          "name": "BBQ",
          "isVegan": false
        },
        "toppings": [
          {
            "name": "Smoked Beef Brisket",
            "calories": 250
          }
        ]
      }
      
    3. Seleziona Execute.

    L'API restituisce la nuova pizza con la proprietà id popolata.

  4. Aggiungere un altro condimento alla pizza BBQ Beef:

    1. Scorrere verso il basso fino all'operazione PUT /Pizza/{id}/addtopping ed espanderla, quindi selezionare il pulsante Prova.
    2. Nel campo id immettere 4.
    3. Nel campo toppingId immettere 5.
    4. Seleziona Execute.

    L'API aggiorna la pizza e restituisce un codice di operazione riuscita. Nel database viene aggiunto un record per PizzaTopping associare la pizza al condimento.

  5. Modificare la salsa sulla pizza BBQ Beef:

    1. Scorrere verso il basso fino all'operazione PUT /Pizza/{id}/updatesauce ed espanderla, quindi selezionare il pulsante Prova.
    2. Nel campo id immettere 4.
    3. Nel campo sauceId immettere 2.
    4. Seleziona Execute.

    L'API aggiorna la pizza e restituisce un codice di operazione riuscita. Nel database il record Pizza viene aggiornato per associare la pizza alla nuova salsa.

  6. Tornare all'operazione GET /Pizza/{id} e richiedere la pizza BBQ Beef impostando il campo id su 4. Selezionare quindi Esegui. Si noti che le proprietà sauce e toppings sono popolate.

    {
        "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. Hai appena capito che una pizza con manzo affumicato, salsa Alfredo e ananas è una pessima idea.

    Eliminare la pizza:

    1. Trovare l'operazione DELETE /Pizza/{id} ed espanderla, quindi selezionare il pulsante Prova.
    2. Nel campo id immettere 4.
    3. Seleziona Execute.

    L'API elimina la pizza e restituisce un codice di operazione riuscita. Nel database, il record Pizza e i record associati in PizzaTopping vengono eliminati.

  8. Nel terminale con l'app in esecuzione premere CTRL+C per arrestare l'app.

Suggerimento

È possibile sperimentare l'uso dell'app. Ogni volta che si vuole iniziare con un nuovo database, arrestare l'app, eliminare i file ContosoPizza.db, .db-shm e .db-wal. Quindi eseguire di nuovo l'app.

Ottimo lavoro! L'app funziona con il database come previsto. Nell'unità successiva, verrà eseguito lo scaffolding dei modelli di entità a partire da un database esistente.