Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Виды обработчика
  • Асинхронный обработчик
  • Синхронный обработчик
  • Примеры
  • Вывод структуры HTTP-запроса
  • Асинхронный обработчик
  • Синхронный обработчик
  1. Разработка на Node.js
  2. Обработчик запросов

Обработчик запросов функции на Node.js

Статья создана
Yandex Cloud
Улучшена
Обновлена 28 января 2025 г.
  • Виды обработчика
  • Асинхронный обработчик
  • Синхронный обработчик
  • Примеры
    • Вывод структуры HTTP-запроса
    • Асинхронный обработчик
    • Синхронный обработчик

Обработчик запросов — это метод, который используется для обработки каждого вызова функции на Node.js. При создании версии функции необходимо указать точку входа, которая состоит из имени файла и имени обработчика запросов (например, index.myFunction). Чтобы обработчик был доступен вне модуля (файла), экспортируйте его, добавив ключ в объект module.exports.

Примечание

В каждый момент времени один экземпляр функции обрабатывает не больше вызовов, чем задано в параметре concurrency. Это позволяет использовать глобальные переменные без необходимости обеспечивать контроль целостности данных.

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

  1. Тело запроса (параметр body).

    Если тело запроса — JSON-документ, то оно будет преобразовано в Object с помощью метода JSON.parse.

  2. Контекст вызова (параметр context).

    Контекст содержит необходимую информацию о версии функции. Структура этого объекта описана в разделе Контекст вызова функции на Node.js.

Виды обработчикаВиды обработчика

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

Асинхронный обработчикАсинхронный обработчик

Обработчик может быть асинхронной функцией async function(). В этом случае вы можете использовать следующие операторы:

  • return — возвращает ответ функции.
  • throw — сообщает среде выполнения об ошибке.
  • await — отслеживает выполнение вызова асинхронных функций.

Примечание

Асинхронная функция должна возвращать непосредственный результат. Дополнительно использовать объект Promise для отслеживания результата вызова не требуется, так как функция уже является асинхронной.

Подробнее о разработке с помощью async/await читайте в Современном учебнике JavaScript.

Синхронный обработчикСинхронный обработчик

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

Чтобы вернуть результат выполнения, используйте оператор return или сигнализируйте об исключении с помощью оператора throw. Синхронная функция обязана возвращать результат, отличный от undefined, иначе код будет выполнен с ошибкой Non-async entry point should provide a result. Return a value or use async function instead.

При этом, если обработчик вернет экземпляр объекта Promise, то среда выполнения автоматически дождется результата обработки этого объекта. При работе с объектом Promise корректная обработка ошибок и исключений зависит от кода вашей функции. Убедитесь, что:

  • Один из обратных вызовов функции (resolve или reject), который выполняется внутри объекта Promise, обязательно будет выполнен.
  • Все исключения в теле функции корректно обработаны.
    В противном случае выполнение кода будет нарушено (функция перестанет реагировать на вызовы, или весь процесс будет завершен с ошибкой).

Подробнее о разработке с помощью Promise читайте в Современном учебнике JavaScript.

ПримерыПримеры

Вывод структуры HTTP-запросаВывод структуры HTTP-запроса

Следующая функция выводит структуру запроса и контекста вызова одновременно и в журнал выполнения, и в ответ функции:

module.exports.handler = function (event, context) {
    console.log("event", event);
    console.log("context", context);
    
    return {
        statusCode: 200,
        body: JSON.stringify({
            event: event,
            context: context
        })
    };
};

Асинхронный обработчикАсинхронный обработчик

Функция делает запрос к https://example.com/ и возвращает HTTP-код ответа и содержимое JSON-документа:

module.exports.handler = async function (event) {
    
    const response = await fetch('https://example.com/');
    const body     = await response.text();
    
    return {
        code: response.status,
        body: body
    };
    
};

Синхронный обработчикСинхронный обработчик

Функция возвращает подготовленный ответ или ошибку:

module.exports.handler = function () {
    if (Math.random() >= 0.5) {
        throw new Error("not so lucky");
    }

    return {
        "message": "Lucky one!"
    };
};

Была ли статья полезна?

Предыдущая
Управление зависимостями
Следующая
Контекст вызова
Проект Яндекса
© 2025 ООО «Яндекс.Облако»