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

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

Примечание.

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

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

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

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

В 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 -D @azure/static-web-apps-cli

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

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

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

Запуск CLI

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

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

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

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

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

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

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

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

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

  3. Сохраните файл.

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

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

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

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

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

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

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

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

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

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

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