Добавление API в Статические веб-приложения Azure с помощью Функций Azure

Вы можете добавлять бессерверные API в Статические веб-приложения Azure посредством Функций Azure. В этой статье показано, как добавить и развернуть API на сайте Статических веб-приложений Azure.

Примечание.

Функции, предоставляемые по умолчанию в Статических веб-приложениях, предварительно настроены для предоставления защищенных конечных точек API и поддерживают только функции, активируемые по HTTP-запросу. О том, чем они отличаются от автономных приложений на базе Функций Azure, см. в статье о поддержке API в Функциях Azure.

Необходимые компоненты

Совет

Средство nvm можно использовать для управления несколькими версиями Node.js в системе разработки. В Windows NVM для Windows можно установить с помощью Winget.

Создание статического веб-приложения

Перед добавлением API создайте и разверните интерфейсное приложение для Статические веб-приложения Azure, выполнив инструкции по созданию первого статического сайта с помощью краткого руководства по Статические веб-приложения Azure.

После развертывания интерфейсного приложения в Статические веб-приложения Azure клонируйте репозиторий приложений. Например, клонировать с помощью командной git строки:

git clone https://github.com/my-username/my-first-static-web-app

В Visual Studio Code откройте корневой каталог репозитория своего приложения. Структура папок содержит исходный код интерфейсного приложения и рабочий процесс GitHub Статических веб-приложений в папке .github/workflows.

├── .github
│   └── workflows
│       └── azure-static-web-apps-<DEFAULT_HOSTNAME>.yml
│
└── (folders and files from your static web app)

Создание API

Вам предстоит создать проект Функций Azure для API Статических веб-приложений. По умолчанию расширение "Статические веб-приложения" для Visual Studio Code создает проект в папке с именем api в корне репозитория.

  1. Нажмите клавишу F1, чтобы открыть палитру команд.

  2. Выберите Статические веб-приложения Azure: Создать функцию HTTP.... Если вам будет предложено установить расширение Функции Azure, установите его и повторно выполните следующую команду.

  3. При появлении запроса введите указанные ниже значения:

    Prompt Значение
    Выбор языка JavaScript
    Выбор модели программирования Версия 3
    Provide a function name (Укажите имя функции) message

    Совет

    Дополнительные сведения о различиях между моделями программирования см. в руководстве разработчика по Функции Azure

    Будет создан проект Функций Azure, содержащий функцию, активируемой по HTTP-запросу. Теперь приложение должно иметь структуру проекта, подобную приведенному ниже примеру.

    ├── .github
    │   └── workflows
    │       └── azure-static-web-apps-<DEFAULT_HOSTNAME>.yml
    │
    ├── api
    │   ├── message
    │   │   ├── function.json
    │   │   └── index.js
    │   ├── host.json
    │   ├── local.settings.json
    │   └── package.json
    │
    └── (folders and files from your static web app)
    
  4. Далее измените функциюmessage так, чтобы она возвращала сообщение в интерфейсное приложение. Внесите следующий код в функцию, содержащуюся в файле api/message/index.js.

    module.exports = async function (context, req) {
        context.res.json({
            text: "Hello from the API"
        });
    };
    

Совет

Можно добавлять дополнительные функции API, повторно выбирая команду Статические веб-приложения Azure: создать функцию HTTP....

Обновление интерфейсного приложения для вызова API

Обновите интерфейсное приложение, чтобы оно вызывало API из раздела /api/message и отображало ответное сообщение.

Если вы создавали приложение, пользуясь краткими руководствами, примените обновления, следуя инструкциям ниже.

Внесите в файл src/index.html следующий код, который получает текст из функции API и отображает его на экране.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>Vanilla JavaScript App</title>
</head>

<body>
    <main>
    <h1>Vanilla JavaScript App</h1>
    <p>Loading content from the API: <b id="name">...</b></p>
    </main>

    <script>
    (async function() {
        const { text } = await( await fetch(`/api/message`)).json();
        document.querySelector('#name').textContent = text;
    }());
    </script>
</body>

</html>

Локальное выполнение интерфейсного приложения и API

Для локального выполнения интерфейсного приложения и API в Статических веб-приложениях Azure предусмотрен интерфейс командной строки (CLI), эмулирующий облачную среду. Интерфейс командной строки использует Функции Azure core Tools для запуска API.

Установка программ командной строки

Убедитесь, что у вас установлены необходимые программы командной строки.

npm install -g @azure/static-web-apps-cli

Совет

Если вы не хотите устанавливать командную swa строку глобально, можно использовать npx swa вместо swa приведенных ниже инструкций.

Сборка интерфейсного приложения

Если ваше приложение использует ту или иную платформу, выполните его сборку, чтобы получить выходной код перед запуском CLI Статических веб-приложений.

Нет необходимости создавать приложение.

Локальный запуск приложения

Инициируйте совместное выполнение интерфейсного приложения и API, запустив приложение с помощью CLI Статических веб-приложений. Такой способ выполнения двух частей приложения позволяет CLI отдавать код собранного интерфейсного приложения из папки и делает API доступным для работающего приложения.

  1. В корневом каталоге репозитория запустите CLI Статических веб-приложений с помощью команды start. Если у приложения другая структура папок, скорректируйте аргументы соответствующим образом.

    Передайте в CLI текущую папку (src) и папку API (api).

    swa start src --api-location api
    
  2. Брандмауэр Windows может запрашивать доступ к Интернету Функции Azure среды выполнения. Выберите Разрешить.

  3. После запуска процессов CLI вы получите доступ к приложению по адресу http://localhost:4280/. Обратите внимание на то, как страница вызывает API и отображает выходные данные — текст Hello from the API.

  4. Чтобы остановить интерфейс командной строки, введите CTRL+C.

Добавление расположения API в рабочий процесс

Прежде чем можно будет развернуть приложение в Azure, необходимо обновить рабочий процесс GitHub Actions репозитория, указав правильное расположение папки API.

  1. Откройте рабочий процесс на сайте .github/workflows/azure-static-web-apps-DEFAULT-HOSTNAME<>.yml.

  2. Найдите свойство api_location и задайте для него значение api.

    ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
    # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
    app_location: "/" # App source code path
    api_location: "api" # Api source code path - optional
    output_location: "build" # Built app content directory - optional
    ###### End of Repository/Build Configurations ######
    
  3. Сохраните файл.

Развертывание изменений

Чтобы опубликовать изменения в статическом веб-приложении Azure, зафиксируйте и отправьте свой код в удаленный репозиторий GitHub.

  1. Нажмите клавишу F1, чтобы открыть палитру команд.

  2. Выберите команду Git: Commit All.

  3. При появлении запроса на фиксацию введите подвиг: добавьте API и зафиксируйте все изменения в локальном репозитории Git.

  4. Нажмите клавишу F1, чтобы открыть палитру команд.

  5. Выберите команду Git: push.

    Изменения будут отправлены в удаленный репозиторий GitHub, в результате чего рабочий процесс GitHub Actions Статических веб-приложений произведет сборку и развертывание приложения.

  6. Откройте репозиторий в GitHub, чтобы отслеживать состояние выполнения рабочего процесса.

  7. По завершении рабочего процесса откройте статическое веб-приложение, чтобы просмотреть внесенные изменения.

Следующие шаги