Упражнение. Создание проекта веб-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 содержит встроенный терминал, который упрощает создание проектов. Если вы не хотите использовать редактор кода, вы можете выполнять команды из этого модуля в терминале.

  1. В Visual Studio Code выберите пункты меню Файл>Открыть папку.

  2. Создайте папку с именем ContosoPizza в выбранном расположении, а затем выберите " Выбрать папку".

  3. Откройте интегрированный терминал Visual Studio Code, выбрав Вид>Терминал в главном меню.

  4. Скопируйте и вставьте следующую команду в окно терминала:

    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
    
  5. Просмотрите следующие файлы и каталоги:

    Имя Описание
    Controllers/ Содержит классы для открытых методов, предоставляемых как конечные точки HTTP.
    Program.cs Настраивает службы и конвейер HTTP-запроса приложения и содержит управляемую точку входа приложения.
    ContosoPizza.csproj Содержит метаданные конфигурации для проекта.
    ContosoPizza.http Содержит конфигурацию для тестирования ИНТЕРФЕЙСов REST API непосредственно из Visual Studio Code.

Создание и тестирование веб-API

  1. Выполните следующую команду интерфейса командной строки .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.

  2. Откройте браузер и перейдите по адресу:

    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.

  1. Откройте файл ContosoPizza.http.

    В некоторых идентификаторах этот файл предварительно настроен с помощью переменных @ContosoPizza_HostAddress и команды GET с вызовом /weatherforecast/ , которая принимает приложение/json.

  2. Если он присутствует в файле, выберите команду 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 командной строки

  1. Откройте новый интегрированный терминал из Visual Studio Code, выбрав терминал>"Новый терминал" в главном меню, а затем выполните следующую команду:

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    Предыдущая команда устанавливает средство командной строки .NET HTTP Read-Eval-Print Loop (REPL), которое используется для выполнения HTTP-запросов к веб-API.

  2. Чтобы подключиться к веб-API, выполните следующую команду:

    httprepl https://localhost:{PORT}
    

    Также можно выполнить следующую команду в любое время, пока выполняется HttpRepl:

    connect https://localhost:{PORT}
    

    Совет

    Если средство HttpRepl выдает предупреждение Не удается найти описание OpenAPI, скорее всего, это ненадежный сертификат разработки. Для HttpReplнеобходимо доверительное соединение. Прежде чем продолжить, необходимо настроить систему для доверия сертификату разработки с помощьюdotnet dev-certs https --trust

  3. Просмотрите доступные конечные точки, выполнив следующую команду:

    ls
    

    Предыдущая команда обнаруживает все API, доступные в подключенной конечной точке, и перечисляет их, как показано в следующих выходных данных:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. Перейдите к конечной точке WeatherForecast, выполнив следующую команду:

    cd WeatherForecast
    

    Предыдущая команда отображает выходные данные со списком доступных API для конечной точки WeatherForecast:

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. Выполните запрос 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"
        },
        // ..
    ]
    
  6. Завершите текущий сеанс HttpRepl с помощью следующей команды:

    exit
    
  7. Вернитесь в терминал dotnet через раскрывающийся список в Visual Studio Code. Завершите работу веб-API, нажав сочетание клавиш CTRL+C на клавиатуре.

Теперь, когда вы создали веб-API, мы можем изменить его в соответствии с потребностями веб-API пиццы.