Exercício: criar um projeto API web
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.
No Visual Studio Code, selecione Ficheiro>Abrir Pasta.
Crie uma nova pasta chamada ContosoPizza no local de sua escolha e escolha Selecionar pasta.
Abra o terminal integrado do Visual Studio Code selecionando View>Terminal no menu principal.
Na janela de terminal, copie e cole o seguinte comando:
dotnet new webapi -controllers -f net8.0Este 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
httpspadrã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.csExamine 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
Execute o seguinte comando da CLI de .NET Core na shell de comandos:
dotnet runO 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
localhostque começa comhttps.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: DevelopmentSe 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 runcomando.Abra um navegador da Web e vá para:
https://localhost:{PORT}/weatherforecastVocê 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.
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.
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
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-httpreplO 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.
Conecte-se à API da Web executando o seguinte comando:
httprepl https://localhost:{PORT}Como alternativa, execute o seguinte comando a qualquer momento durante
HttpRepla execução:connect https://localhost:{PORT}Gorjeta
Se a
HttpReplferramenta avisar Não é possível encontrar uma descrição OpenAPI, a causa mais provável é um certificado de desenvolvimento não confiável.HttpReplrequer uma conexão confiável. Antes de continuar, você deveconfigurar seu sistema para confiar no certificado de desenvolvimento comdotnet dev-certs https --trustExplore os pontos de extremidade disponíveis executando o seguinte comando:
lsO 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]Vá para o
WeatherForecastponto de extremidade executando o seguinte comando:cd WeatherForecastO comando anterior mostra uma saída de APIs disponíveis para o
WeatherForecastponto de extremidade:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]Faça uma
GETsolicitação usandoHttpReplo seguinte comando:getO comando anterior faz uma
GETsolicitaçã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" }, // .. ]Termine a sessão atual
HttpReplusando o seguinte comando:exitRetorne ao
dotnetterminal 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.