Упражнение. Создание проекта веб-API
В этом модуле используется пакет SDK для .NET 8.0. Убедитесь, что установлен .NET 8.0, выполнив следующую команду в предпочтительном терминале команд:
dotnet --list-sdks
Выходные данные, аналогичные следующему примеру, отображаются:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Убедитесь, что в списке есть версия, которая начинается с цифры 8
. Если нет списка или команда не найдена, установите последний пакет SDK для .NET 8.0.
Создание и изучение проекта веб-API
Чтобы настроить проект .NET для работы с веб-API, мы используем Visual Studio Code. Visual Studio Code содержит встроенный терминал, который упрощает создание проектов. Если вы не хотите использовать редактор кода, вы можете выполнять команды из этого модуля в терминале.
В Visual Studio Code выберите пункты меню Файл>Открыть папку.
Создайте папку с именем ContosoPizza в выбранном расположении, а затем выберите " Выбрать папку".
Откройте интегрированный терминал Visual Studio Code, выбрав Вид>Терминал в главном меню.
Скопируйте и вставьте следующую команду в окно терминала:
dotnet new webapi -controllers -f net8.0
Эта команда создает файлы для базового проекта веб-API, использующего контроллеры, а также файл проекта C# с именем ContosoPizza.csproj , который возвращает список прогнозов погоды. Если вы получите ошибку, убедитесь, что установлен пакет SDK для .NET 8.
Внимание
Проекты веб-API по умолчанию защищены протоколом
https
. При возникновении проблем настройте сертификат разработки ASP.NET Core HTTPS.Вы можете получить запрос от Visual Studio Code на добавление ресурсов для отладки проекта. Нажмите Да в диалоговом окне.
Эта команда использует псевдоним шаблона проекта ASP.NET Core для webapi формирования шаблонов веб-API на основе C#. Создается каталог ContosoPizza. Этот каталог содержит проект ASP.NET Core, который выполняется на платформе .NET. Имя проекта соответствует имени каталога ContosoPizza.
Теперь у вас должен быть доступ к этим файлам и каталогам:
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.cs
Просмотрите следующие файлы и каталоги:
Имя Описание Controllers/ Содержит классы для открытых методов, предоставляемых как конечные точки HTTP. Program.cs Настраивает службы и конвейер HTTP-запроса приложения и содержит управляемую точку входа приложения. ContosoPizza.csproj Содержит метаданные конфигурации для проекта. ContosoPizza.http Содержит конфигурацию для тестирования ИНТЕРФЕЙСов REST API непосредственно из Visual Studio Code.
Создание и тестирование веб-API
Выполните следующую команду интерфейса командной строки .NET Core в командной оболочке:
dotnet run
Предыдущая команда:
- находит файл проекта в текущем каталоге;
- получает и устанавливает необходимые зависимости для этого проекта;
- компилирует код проекта;
- Размещает веб-API на веб-сервере Kestrel ASP.NET Core с конечными точками HTTP и HTTPS.
Порт от 5000 до 5300 выбирается для HTTP, а при создании проекта — от 7000 до 7300. Используемые на этапе разработки порты можно легко изменить в файле launchSettings.json проекта. Этот модуль использует безопасный URL-адрес
localhost
с префиксомhttps
.Вы должны получить выходные данные, аналогичные следующему, указывая, что приложение работает:
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
Если вы запускаете это приложение на своем компьютере, вы можете направить браузер на ссылку HTTPS, отображаемую в выходных данных (в предыдущем случае),
https://localhost:7294
чтобы просмотреть полученную страницу. Помните этот порт, так как он используется во всем модуле, где{PORT}
используется.Внимание
При возникновении непредвиденного поведения просмотрите вывод терминала. Если сборка завершается с ошибкой или возникают другие проблемы, сведения из файла журнала помогут устранить неполадки. Для внесения в код изменений нужно остановить веб-API, нажав сочетание клавиш CTRL+C на клавиатуре и заново выполнив команду
dotnet run
.Откройте браузер и перейдите по адресу:
https://localhost:{PORT}/weatherforecast
Вы должны увидеть выходные данные JSON, аналогичные этому примеру:
[ { "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" }, // ... ]
Необязательно. Изучение файлов .http
В проект входит contosoPizza.http, файл, используемый для тестирования конечных точек API с помощью стандартного формата. .http
файлы поддерживаются в нескольких интегрированных средах разработки (IDEs), включая Visual Studio и внутри Visual Studio Code с установленным расширением клиента REST.
Откройте файл ContosoPizza.http.
В некоторых идентификаторах этот файл предварительно настроен с помощью переменных @ContosoPizza_HostAddress и команды GET с вызовом /weatherforecast/ , которая принимает приложение/json.
Если он присутствует в файле, выберите команду Send Request над GET , которая отправляет запрос в запущенную службу.
При вызове этой команды откроется окно ответа с выходными данными, похожими на то, что мы видели в браузере:
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" }, // .. ]
Необязательно. Изучение API с помощью HTTP REPL командной строки
Откройте новый интегрированный терминал из Visual Studio Code, выбрав терминал>"Новый терминал" в главном меню, а затем выполните следующую команду:
dotnet tool install -g Microsoft.dotnet-httprepl
Предыдущая команда устанавливает средство командной строки .NET HTTP Read-Eval-Print Loop (REPL), которое используется для выполнения HTTP-запросов к веб-API.
Чтобы подключиться к веб-API, выполните следующую команду:
httprepl https://localhost:{PORT}
Также можно выполнить следующую команду в любое время, пока выполняется
HttpRepl
:connect https://localhost:{PORT}
Совет
Если средство
HttpRepl
выдает предупреждение Не удается найти описание OpenAPI, скорее всего, это ненадежный сертификат разработки. ДляHttpRepl
необходимо доверительное соединение. Прежде чем продолжить, необходимо настроить систему для доверия сертификату разработки с помощьюdotnet dev-certs https --trust
Просмотрите доступные конечные точки, выполнив следующую команду:
ls
Предыдущая команда обнаруживает все API, доступные в подключенной конечной точке, и перечисляет их, как показано в следующих выходных данных:
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]
Перейдите к конечной точке
WeatherForecast
, выполнив следующую команду:cd WeatherForecast
Предыдущая команда отображает выходные данные со списком доступных API для конечной точки
WeatherForecast
:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]
Выполните запрос
GET
вHttpRepl
с помощью следующей команды:get
Предыдущая команда выполняет такой же запрос
GET
, как и браузер при переходе к конечной точке: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" }, // .. ]
Завершите текущий сеанс
HttpRepl
с помощью следующей команды:exit
Вернитесь в терминал
dotnet
через раскрывающийся список в Visual Studio Code. Завершите работу веб-API, нажав сочетание клавиш CTRL+C на клавиатуре.
Теперь, когда вы создали веб-API, мы можем изменить его в соответствии с потребностями веб-API пиццы.