Exercício – Executar a aplicação
No exercício anterior, escreveu código para a API da sua equipa implementar operações de base de dados. Neste exercício, vai testar a API agora que está ligada à base de dados.
Executar a API
No painel de terminal, execute a aplicação:
dotnet run
Inspecione o resultado da execução da aplicação e tenha em atenção as seguintes informações:
- O EF Core ecoa comandos SQL como
info
eventos de registo quando são executados. - Se a base de dados ainda não existir, as tabelas e os índices são definidos com comandos SQL
CREATE
. - Se a base de dados ainda não tiver sido propagada,
INSERT
os comandos são executados para adicionar os dados de seed. - Para segurança, os valores dos parâmetros não são ecoados para a consola. Pode alterar esta definição com EnableSensitiveDataLogging.
- O EF Core ecoa comandos SQL como
Utilize o EXPLORADOR DO SQLite para explorar a base de dados semeada. Cada tabela tem dados.
Aceda ao Swagger
Agora que a API está em execução, teste a API para ver se as operações funcionam conforme esperado. A API está configurada para utilizar o Swagger para fornecer uma IU de teste. O Swagger é uma ferramenta que o ajuda a conceber, criar, documentar e consumir serviços Web RESTful.
No resultado apresentado depois de executar a aplicação, localize o URL HTTP onde a aplicação escuta. O resultado é semelhante ao seguinte exemplo:
info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5200
Para abrir o URL, selecione-o enquanto mantém a tecla Ctrl premida. O browser é aberto na localização da
/
API, que devolve o textoContoso Pizza management API. Go to /swagger to open the Swagger test UI.
Na barra de endereço do browser, adicione
/swagger
ao final do URL e selecione Enter.
Testar operações CRUD
Nos passos seguintes, utilize a IU do Swagger para testar cada uma das operações da API da forma que uma aplicação cliente faria. Após cada operação, inspecione a base de dados no SQLite Explorer para ver as alterações da base de dados à medida que acontecem.
Peça a lista completa de pizzas:
- No cabeçalho Pizza , expanda a operação GET /Pizza e selecione Experimentar.
- Selecione o botão Executar .
A API devolve a lista de pizzas como JSON (em Corpo da resposta).
[ { "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 } ]
Dica
Por que motivo as
sauce
propriedades etoppings
são nulas? Este resultado é esperado porque, noPizzaService.GetAll
método , não utilizou oInclude
método de extensão para especificar que as propriedades de navegação devem ser carregadas.Pedir uma única pizza:
- Desloque-se para baixo até à operação GET /Pizza{id} e expanda-a. Em seguida, selecione Experimentar.
- No campo ID , introduza
2
e selecione Executar.
A API devolve a pizza "Havaiana". Repare que as
sauce
propriedades etoppings
são preenchidas porque oPizzaService.GetById
método utiliza oInclude
método de extensão.Adicione uma nova pizza:
Desloque-se para cima até à operação POST /Pizza (localizada entre as operações GET que acabou de utilizar) e expanda-a. Em seguida, selecione Experimentar.
Na caixa de texto Corpo do pedido , cole o seguinte JSON:
{ "name": "BBQ Beef", "sauce": { "name": "BBQ", "isVegan": false }, "toppings": [ { "name": "Smoked Beef Brisket", "calories": 250 } ] }
Selecione Execute (Executar).
A API devolve a nova pizza com a
id
propriedade preenchida.Adicione outra cobertura à pizza bbQ Beef:
- Desloque-se para baixo até à operação PUT /Pizza{id}/addtopping e expanda-a. Selecione Experimentar.
- No campo ID , introduza 4.
- No campo toppingId , introduza 5.
- Selecione Execute (Executar).
A API atualiza a pizza e devolve um código de êxito. Na base de dados, é adicionado um registo para
PizzaTopping
associar a pizza à cobertura.Altere o molho na pizza bbQ Beef:
- Desloque-se para baixo até à operação PUT /Pizza{id}/updatesauce e expanda-a. Selecione Experimentar.
- No campo ID , introduza 4.
- No campo sauceId , introduza 2.
- Selecione Execute (Executar).
A API atualiza a pizza e devolve um código de êxito. Na base de dados, o
Pizza
registo é atualizado para associar a pizza ao novo molho.Regresse à operação GET /Pizza{id} e solicite a pizza BEEF BBQ ao definir o campo ID como 4. Em seguida, selecione Executar. Repare que as
sauce
propriedades etoppings
estão preenchidas.{ "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 } ] }
Percebeste que uma pizza de peito fumado com molho Alfredo e ananás é uma péssima ideia.
Elimine a pizza:
- Localize a operação DELETE /Pizza{id} e expanda-a. Selecione Experimentar.
- No campo ID , introduza 4.
- Selecione Execute (Executar).
A API elimina a pizza e devolve um código de êxito. Na base de dados, o
Pizza
registo e os registos associados noPizzaTopping
são eliminados.No terminal com a aplicação em execução, selecione Ctrl+C para parar a aplicação em execução.
Dica
Pode experimentar a aplicação. Sempre que quiser começar com uma nova base de dados, pare a aplicação e elimine os ficheiros ContosoPizza.db, .db-shm e .db-wal . Em seguida, execute a aplicação novamente.
Bom trabalho! A aplicação está a funcionar com a sua base de dados conforme esperado! Na próxima unidade, irá estruturar modelos de entidade a partir de uma base de dados existente.