Exercício – Executar a aplicação

Concluído

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

  1. No painel de terminal, execute a aplicação:

    dotnet run
    
  2. 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.
  3. 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.

  1. 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
    
  2. Para abrir o URL, selecione-o enquanto mantém a tecla Ctrl premida. O browser é aberto na localização da / API, que devolve o texto Contoso Pizza management API. Go to /swagger to open the Swagger test UI.

  3. 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.

  1. Peça a lista completa de pizzas:

    1. No cabeçalho Pizza , expanda a operação GET /Pizza e selecione Experimentar.
    2. 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 e toppings são nulas? Este resultado é esperado porque, no PizzaService.GetAll método , não utilizou o Include método de extensão para especificar que as propriedades de navegação devem ser carregadas.

  2. Pedir uma única pizza:

    1. Desloque-se para baixo até à operação GET /Pizza{id} e expanda-a. Em seguida, selecione Experimentar.
    2. No campo ID , introduza 2 e selecione Executar.

    A API devolve a pizza "Havaiana". Repare que as sauce propriedades e toppings são preenchidas porque o PizzaService.GetById método utiliza o Include método de extensão.

  3. Adicione uma nova pizza:

    1. 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.

    2. 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
          }
        ]
      }
      
    3. Selecione Execute (Executar).

    A API devolve a nova pizza com a id propriedade preenchida.

  4. Adicione outra cobertura à pizza bbQ Beef:

    1. Desloque-se para baixo até à operação PUT /Pizza{id}/addtopping e expanda-a. Selecione Experimentar.
    2. No campo ID , introduza 4.
    3. No campo toppingId , introduza 5.
    4. 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.

  5. Altere o molho na pizza bbQ Beef:

    1. Desloque-se para baixo até à operação PUT /Pizza{id}/updatesauce e expanda-a. Selecione Experimentar.
    2. No campo ID , introduza 4.
    3. No campo sauceId , introduza 2.
    4. 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.

  6. 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 e toppings 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
            }
        ]
    }
    
  7. Percebeste que uma pizza de peito fumado com molho Alfredo e ananás é uma péssima ideia.

    Elimine a pizza:

    1. Localize a operação DELETE /Pizza{id} e expanda-a. Selecione Experimentar.
    2. No campo ID , introduza 4.
    3. 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 no PizzaTopping são eliminados.

  8. 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.