Ejercicio: Ejecución de la aplicación
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 que conectó a la base de datos.
Ejecutar la API
En el panel del terminal, ejecute la aplicación:
dotnet run
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.
- EF Core refleja los comandos SQL como eventos de registro
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.
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
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 textoContoso Pizza management API. Go to /swagger to open the Swagger test UI.
.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.
Solicite la lista completa de pizzas:
- Bajo el encabezado Pizza, expanda la operación GET /Pizza y seleccione el botón Probarlo.
- 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
ytoppings
son NULL? Se espera este resultado porque en el métodoPizzaService.GetAll
no ha utilizado el método de extensiónInclude
para especificar que se deben cargar las propiedades de navegación.Solicitar una sola pizza:
- Desplácese hasta la operación GET /Pizza/{id} y expándala, después seleccione el botón Probarlo.
- En el campo id, escriba 2 y seleccione Ejecutar.
La API devuelve la pizza "Hawaiana". Observe que las propiedades
sauce
ytoppings
se rellenan porque el métodoPizzaService.GetById
usa el método de extensiónInclude
.Agregue una nueva pizza:
Desplácese hasta la operación POST /Pizza (situada entre las operaciones GET que usó) y expándala, después seleccione el botón Probarlo.
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 } ] }
Seleccione Execute(Ejecutar).
La API devuelve la nueva pizza con la propiedad
id
rellenada.Agregue otro ingrediente a la pizza BBQ Beef:
- Desplácese hasta la operación PUT /Pizza/{id}/addtopping y expándala, después seleccione el botón Probarlo.
- En el campo id, escriba 4.
- En el campo toppingId, escriba 5.
- 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.Cambia la salsa de la pizza BBQ Beef:
- Desplácese hasta la operación PUT /Pizza/{id}/updatesauce y expándala, después seleccione el botón Probarlo.
- En el campo id, escriba 4.
- En el campo sauceId, escriba 2.
- 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.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
ytoppings
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 } ] }
Se acaba de dar cuenta de que una pizza de carne ahumada con salsa Alfredo y piña es una idea terrible.
Elimine la pizza:
- Busque la operación DELETE /Pizza/{id} y expándala, después seleccione el botón Probarlo.
- En el campo id, escriba 4.
- 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 dePizzaTopping
.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, realiza scaffolding en los modelos de entidad desde una base de datos existente.