Exercício: criar um projeto API web

Concluído

Este módulo usa o SDK do .NET 8.0. Certifique-se de ter o .NET 8.0 instalado executando o seguinte comando no seu terminal de comando preferido:

dotnet --list-sdks

Saída semelhante ao exemplo a seguir aparece:

6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]

Certifique-se de que uma versão que começa com 8 está listada. Se nenhum estiver listado ou o comando não for encontrado, instale o SDK do .NET 8.0 mais recente.

Criar e explorar um projeto de API da Web

Para configurar um projeto .NET para trabalhar com a API da Web, usamos o Visual Studio Code. O Visual Studio Code inclui um terminal integrado que facilita a criação de um novo projeto. Se você não quiser usar um editor de código, você pode executar os comandos neste módulo em um terminal.

  1. No Visual Studio Code, selecione Ficheiro>Abrir Pasta.

  2. Crie uma nova pasta chamada ContosoPizza no local de sua escolha e escolha Selecionar pasta.

  3. Abra o terminal integrado do Visual Studio Code selecionando View>Terminal no menu principal.

  4. Na janela de terminal, copie e cole o seguinte comando:

    dotnet new webapi -controllers -f net8.0
    

    Este comando cria os arquivos para um projeto básico de API da Web que usa controladores, juntamente com um arquivo de projeto C# chamado ContosoPizza.csproj que retorna uma lista de previsões meteorológicas. Se você receber um erro, verifique se você tem o SDK do .NET 8 instalado.

    Importante

    Os projetos de API da Web são protegidos por https padrão. Se você tiver problemas, configure o certificado de desenvolvimento ASP.NET Core HTTPS.

    Você pode receber um prompt do Visual Studio Code para adicionar ativos para depurar o projeto. Selecione Sim na caixa de diálogo.

    O comando usa um modelo de projeto ASP.NET Core aliased como webapi scaffold um projeto de API da Web baseado em C#. Um ContosoPizza diretório é criado. Este diretório contém um projeto ASP.NET Core em execução no .NET. O nome do projeto corresponde ao nome do diretório ContosoPizza.

    Agora você deve ter acesso a estes arquivos e diretórios:

    -| Controllers
    -| obj
    -| Properties
    -| appsettings.Development.json
    -| appsettings.json
    -| ContosoPizza.csproj
    -| ContosoPizza.http
    -| Program.cs
    -| WeatherForecast.cs
    
  5. Examine os seguintes ficheiros e diretórios:

    Nome Descrição
    Controllers/ Contém classes com métodos públicos expostos como pontos finais HTTP.
    Program.cs Configura serviços e o pipeline de solicitação HTTP do aplicativo e contém o ponto de entrada gerenciado do aplicativo.
    ContosoPizza.csproj Contém os metadados de configuração do projeto.
    ContosoPizza.http Contém configuração para testar APIs REST diretamente do Visual Studio Code.

Crie e teste a API da Web

  1. Execute o seguinte comando da CLI de .NET Core na shell de comandos:

    dotnet run
    

    O comando anterior:

    • Localiza o ficheiro de projeto no diretório atual.
    • Obtém e instala as dependências de projeto necessárias para este projeto.
    • Compila o código do projeto.
    • Hospeda a API da Web com o servidor Web ASP.NET Core Kestrel em um ponto de extremidade HTTP e HTTPS.

    Uma porta de 5000 a 5300 é selecionada para HTTP, e de 7000 a 7300 para HTTPS, quando o projeto é criado. Você pode alterar facilmente as portas que usa durante o desenvolvimento editando o arquivo launchSettings.json do projeto. Este módulo usa a URL segura localhost que começa com https.

    Você deve obter uma saída semelhante à seguinte, indicando que seu aplicativo está em execução:

    Building...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:7294
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5118 
    info: Microsoft.Hosting.Lifetime[0]
          Application started. Press Ctrl+C to shut down.
    info: Microsoft.Hosting.Lifetime[0]
          Hosting environment: Development        
    

    Se você estiver executando este aplicativo em sua própria máquina, você pode direcionar um navegador para o link HTTPS exibido na saída (no caso anterior, https://localhost:7294) para visualizar a página resultante. Lembre-se desta porta, porque você usá-lo em todo o módulo onde {PORT} é usado.

    Importante

    Verifique a saída do terminal se encontrar algum comportamento inesperado. Se a compilação falhar ou ocorrerem outros erros, as informações do arquivo de log ajudarão você a solucionar problemas. Ao fazer alterações no código, você precisará parar a API da Web selecionando CTRL+C no teclado e executando novamente o dotnet run comando.

  2. Abra um navegador da Web e vá para:

    https://localhost:{PORT}/weatherforecast
    

    Você deve ver a saída JSON semelhante a este exemplo:

    [
        {
        "date": "2021-11-09T20:36:01.4678814+00:00",
        "temperatureC": 33,
        "temperatureF": 91,
        "summary": "Scorching"
        },
        {
        "date": "2021-11-09T20:36:01.4682337+00:00",
        "temperatureC": -8,
        "temperatureF": 18,
        "summary": "Cool"
        },
        // ...
    ]
    

Opcional: Explorar com .http arquivos

Incluído no projeto está ContosoPizza.http, um arquivo que é usado para testar pontos de extremidade de API por meio de um formato padrão. .http arquivos são suportados em vários ambientes de desenvolvimento integrado (IDEs), incluindo Visual Studio e dentro do Visual Studio Code com a extensão de cliente REST instalada.

  1. Abra o arquivo ContosoPizza.http.

    Em alguns IDEs, esse arquivo é pré-configurado com as variáveis @ContosoPizza_HostAddress e um comando GET chamando /weatherforecast/ que aceita application/json.

  2. Se ele estiver presente em seu arquivo, selecione o comando Solicitação enviada acima do GET que envia uma solicitação para o serviço em execução.

    Chamar este comando abre uma janela de resposta com saída semelhante à que vimos no navegador:

    HTTP/1.1 200 OK
    Connection: close
    Content-Type: application/json; charset=utf-8
    Date: Wed, 17 Jan 2024 16:46:40 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
        {
            "date": "2024-01-18",
            "temperatureC": -2,
            "temperatureF": 29,
            "summary": "Warm"
        },
        {
            "date": "2024-01-19",
            "temperatureC": 24,
            "temperatureF": 75,
            "summary": "Chilly"
        },
        // ..
    ]
    

Opcional: Explore APIs com linha de comando HTTP REPL

  1. Abra um novo terminal integrado do Visual Studio Code selecionando Terminal>New Terminal no menu principal e execute o seguinte comando:

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    O comando anterior instala a ferramenta de linha de comando .NET HTTP Read-Eval-Print Loop (REPL) que você usa para fazer solicitações HTTP para a API da Web.

  2. Conecte-se à API da Web executando o seguinte comando:

    httprepl https://localhost:{PORT}
    

    Como alternativa, execute o seguinte comando a qualquer momento durante HttpRepl a execução:

    connect https://localhost:{PORT}
    

    Gorjeta

    Se a HttpRepl ferramenta avisar Não é possível encontrar uma descrição OpenAPI, a causa mais provável é um certificado de desenvolvimento não confiável. HttpRepl requer uma conexão confiável. Antes de continuar, você deveconfigurar seu sistema para confiar no certificado de desenvolvimento com dotnet dev-certs https --trust

  3. Explore os pontos de extremidade disponíveis executando o seguinte comando:

    ls
    

    O comando anterior deteta todas as APIs disponíveis no ponto de extremidade conectado e as lista, como na saída a seguir:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. Vá para o WeatherForecast ponto de extremidade executando o seguinte comando:

    cd WeatherForecast
    

    O comando anterior mostra uma saída de APIs disponíveis para o WeatherForecast ponto de extremidade:

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. Faça uma GET solicitação usando HttpRepl o seguinte comando:

    get
    

    O comando anterior faz uma GET solicitação semelhante a ir para o ponto de extremidade no navegador:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 02 Apr 2021 17:31:43 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    [
        {
        "date": 4/3/2021 10:31:44 AM,
        "temperatureC": 13,
        "temperatureF": 55,
        "summary": "Sweltering"
        },
        {
        "date": 4/4/2021 10:31:44 AM,
        "temperatureC": -13,
        "temperatureF": 9,
        "summary": "Warm"
        },
        // ..
    ]
    
  6. Termine a sessão atual HttpRepl usando o seguinte comando:

    exit
    
  7. Retorne ao dotnet terminal na lista suspensa no Visual Studio Code. Desligue a API da Web selecionando CTRL+C no teclado.

Agora que você criou a API da web, podemos modificá-la para atender às necessidades da API da web da pizza.