Ejercicio: Ejecución de la aplicación

Completado

En el ejercicio anterior, escribió código para la API del equipo para implementar operaciones de base de datos. En este ejercicio, probará la API ahora que está conectada a la base de datos.

Ejecutar la API

  1. En el panel del terminal, ejecute la aplicación:

    dotnet run
    
  2. Inspeccione el resultado de la ejecución de la aplicación y anote la siguiente información:

    • EF Core refleja los comandos SQL como eventos de registro info cuando se ejecutan.
    • Si la base de datos aún no existe, las tablas y los índices se definen con comandos CREATE de SQL.
    • Si la base de datos aún no se ha inicializado, se ejecutan comandos INSERT para agregar los datos de inicialización.
    • Por motivos de seguridad, los valores de parámetro no se reflejan en la consola. Puede cambiar esta configuración mediante EnableSensitiveDataLogging.
  3. Use el Explorador de SQLite para explorar la base de datos propagada. Cada tabla tiene datos.

Ir a Swagger

Ahora que la API se está ejecutando, pruébela para ver si las operaciones funcionan según lo previsto. La API está configurada para usar Swagger para proporcionar una interfaz de usuario de prueba. Swagger es una herramienta que le ayuda a diseñar, compilar, documentar y consumir servicios web RESTful.

  1. En el resultado que aparece después de ejecutar la aplicación, busque la dirección URL HTTP donde la aplicación escucha. El resultado es similar al ejemplo siguiente:

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5200
    
  2. Para abrir la dirección URL, selecciónela mientras mantiene presionada la tecla Ctrl. El explorador se abre en la ubicación / de la API, que devuelve el texto Contoso Pizza management API. Go to /swagger to open the Swagger test UI..

  3. En la barra de direcciones del explorador, agregue /swagger al final de la URL y presione ENTRAR.

Prueba de las operaciones CRUD

En los pasos siguientes, use la interfaz de usuario de Swagger para probar cada una de las operaciones de la API como lo haría una aplicación cliente. Después de cada operación, inspeccione la base de datos en el Explorador de SQLite para ver los cambios en la base de datos a medida que se realizan.

  1. Solicite la lista completa de pizzas:

    1. En el encabezado Pizza, expanda la operación GET /Pizza y seleccione Pruébelo.
    2. Seleccione el botón Ejecutar.

    La API devuelve la lista de pizzas como JSON (en Cuerpo de respuesta).

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

    Sugerencia

    ¿Por qué las propiedades sauce y toppings son NULL? Se espera este resultado porque en el método PizzaService.GetAll no ha utilizado el método de extensión Include para especificar que se deben cargar las propiedades de navegación.

  2. Solicitar una sola pizza:

    1. Desplácese hacia abajo hasta la operación GET /Pizza{id} y expándala. A continuación, seleccione Probar.
    2. En el campo id , escriba 2 y seleccione Ejecutar.

    La API devuelve la pizza "Hawaiana". Observe que las propiedades sauce y toppings se rellenan porque el método PizzaService.GetById usa el método de extensión Include.

  3. Agregue una nueva pizza:

    1. Desplácese hacia arriba hasta la operación POST /Pizza (ubicada entre las operaciones GET que acaba de usar) y expándala. A continuación, seleccione Probar.

    2. En el cuadro de texto Cuerpo de la solicitud, pegue el siguiente código JSON:

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

    La API devuelve la nueva pizza con la propiedad id rellenada.

  4. Agregue otro ingrediente a la pizza BBQ Beef:

    1. Desplácese hacia abajo hasta la operación PUT /Pizza{id}/addtopping y expándala. Haga clic en Probar.
    2. En el campo id, escriba 4.
    3. En el campo toppingId, escriba 5.
    4. Seleccione Execute(Ejecutar).

    La API actualiza la pizza y devuelve un código de operación completada correctamente. En la base de datos, se agrega un registro a PizzaTopping para asociar la pizza con el ingrediente.

  5. Cambia la salsa de la pizza BBQ Beef:

    1. Desplácese hacia abajo hasta la operación PUT /Pizza{id}/updatesauce y expándala. Haga clic en Probar.
    2. En el campo id, escriba 4.
    3. En el campo sauceId, escriba 2.
    4. Seleccione Execute(Ejecutar).

    La API actualiza la pizza y devuelve un código de operación completada correctamente. En la base de datos, el registro Pizza se actualiza para asociar la pizza con la nueva salsa.

  6. Vuelva a la operación GET /Pizza{id} y pida la pizza BBQ Beef estableciendo el campo id en 4. Luego, seleccione Ejecutar. Observe que las propiedades sauce y toppings se han rellenado.

    {
        "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. Se ha dado cuenta de que una pizza de carne ahumada con salsa Alfredo y piña es una idea terrible.

    Elimine la pizza:

    1. Busque la operación DELETE /Pizza{id} y expándala. Haga clic en Probar.
    2. En el campo id, escriba 4.
    3. Seleccione Execute(Ejecutar).

    La API elimina la pizza y devuelve un código de operación completada correctamente. En la base de datos, se eliminan el registro Pizza y los registros asociados de PizzaTopping.

  8. En el terminal con la aplicación en ejecución, presione Ctrl+C para detener la ejecución de dicha aplicación.

Sugerencia

Puede experimentar con la aplicación. Siempre que quiera empezar con una base de datos nueva, detenga la aplicación y elimine los archivos ContosoPizza.db, .db-shm y .db-wal. Luego, vuelva a ejecutar la aplicación.

¡Excelente trabajo! La aplicación funciona con la base de datos según lo previsto. En la siguiente unidad, realizará scaffolding en los modelos de entidad desde una base de datos existente.