Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Cloud Functions
  • Начало работы
    • Обзор
    • Создание функции
      • Обзор
      • Python
      • Node.js
      • PHP
      • Go
      • Bash
    • Создание триггера
      • Обзор
      • Таймер
      • Триггер для Message Queue
      • Триггер для Object Storage
      • Триггер для Container Registry
      • Триггер для Cloud Logs
      • Триггер для Yandex IoT Core
  • Пошаговые инструкции
    • Все инструкции
    • Получение IAM-токена сервисного аккаунта с помощью функции
    • Управление правами доступа к функции
    • Управление функцией
      • Создание функции
      • Управление версиями функции
      • Работа в редакторе кода
      • Вызов функции
      • Изменение функции
      • Просмотр графиков мониторинга
      • Просмотр журнала выполнения
      • Удаление функции
    • Управление триггером
      • Получение информации о триггере
      • Создание таймера
      • Создание триггера для Message Queue
      • Создание триггера для Object Storage
      • Создание триггера для Container Registry
      • Создание триггера для Cloud Logs
      • Создание триггера для Yandex IoT Core
      • Изменение триггера
      • Удаление триггера
  • Концепции
    • Обзор
    • Функция
    • Вызов функции
    • Среда выполнения
      • Обзор
      • Окружение
      • Контекст выполнения
    • Сборщик
    • Триггер
      • Обзор
      • Таймер
      • Триггер для Message Queue
      • Триггер для Object Storage
      • Триггер для Container Registry
      • Триггер для Cloud Logs
      • Триггер для Yandex IoT Core
    • Dead Letter Queue
    • Лог-группы
    • Мониторинг
    • Резервное копирование
    • Квоты и лимиты
  • Разработка на Node.js
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Python
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Go
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на PHP
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
  • Разработка на Bash
    • Обзор
    • Обработчик запросов
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на Java
    • Обзор
    • Модель программирования
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
      • Класс HttpServlet
      • Spring Boot
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Разработка на R
    • Обзор
    • Модель программирования
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
  • Разработка на C#
    • Обзор
    • Модель программирования
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Сценарии использования
    • Создание навыка Алисы
    • Развертывание веб-приложения
  • Правила тарификации
  • Управление доступом
  • Справочник API Functions
    • Аутентификация в API
    • gRPC
      • Обзор
      • FunctionService
      • OperationService
    • REST
      • Обзор
      • Function
        • Обзор
        • create
        • createVersion
        • delete
        • get
        • getVersion
        • getVersionByTag
        • list
        • listAccessBindings
        • listOperations
        • listRuntimes
        • listTagHistory
        • listVersions
        • removeTag
        • setAccessBindings
        • setTag
        • update
        • updateAccessBindings
  • Справочник API Triggers
    • Аутентификация в API
    • gRPC
      • Обзор
      • TriggerService
      • OperationService
    • REST
      • Обзор
      • Trigger
        • Обзор
        • create
        • delete
        • get
        • list
        • listOperations
        • update
  • Вопросы и ответы
  1. Разработка на Java
  2. Модель программирования
  3. Класс HttpServlet

Использование класса HttpServlet для задания обработчика

  • Неподдерживаемые методы
  • Пример: моделирование различного поведения функции при вызове с разными HTTP-методами

Вы можете задать обработчик, переопределив выбранные методы класса HttpServlet.

Сервис Cloud Functions будет автоматически перенаправлять каждый HTTP-запрос в ваш обработчик, в зависимости от HTTP-метода, с которым этот запрос был инициирован. Например, GET-запрос будет перенаправлен в метод doGet вашего обработчика, а POST — в doPost. Для успешного перенаправления соответствующие методы обработчика должны существовать, иначе ответом функции будет сообщение HTTP method XXX is not supported by this URL с кодом 405.

Неподдерживаемые методы

При использовании данной модели, обратите внимание на то, что некоторые методы классов HttpServletRequest и HttpServletResponse не поддерживаются сервисом Cloud Functions.

HttpServletRequest:

  • getAuthType
  • getCookies
  • upgrade
  • authenticate
  • login
  • logout
  • getContextPath
  • getServletPath
  • getPathTranslated
  • getRealPath
  • getRemotePort
  • getLocalAddr
  • getLocalPort
  • getServerPort
  • isUserInRole
  • getUserPrincipal
  • getRequestedSessionId
  • getSession
  • changeSessionId
  • isRequestedSessionIdValid
  • isRequestedSessionIdFromCookie
  • isRequestedSessionIdFromURL
  • isRequestedSessionIdFromUrl

HttpServletResponse:

  • encodeURL
  • encodeRedirectURL
  • encodeUrl
  • encodeRedirectUrl

Пример: моделирование различного поведения функции при вызове с разными HTTP-методами

Важно

Не используйте для вызова этой функции параметр integration=raw. При применении этого параметра функция не получает данных о методах, заголовках и параметрах исходного запроса.

Файл Handler.java:

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Handler extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    // выставив значение Content-Type в text/html, позволяем браузеру рендерить html код
    response.setContentType("text/html");
    // отобразится в виде полужирной строки при вызове функции из браузера
    response.getOutputStream().print("<b>Hello, world. In bold.</b>");
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
    var name = request.getParameter("name");
    response.getWriter().println("Hello, " + name);
    // printWriter, возвращаемый методом getWriter, нужно обязательно закрывать
    response.getWriter().close();
  }
}

Примеры запросов:

Метод: GET:

<b>Hello, world. In bold.</b>

Примечание

При выполнении GET-запроса в браузере данная строка отобразится в полужирном шрифте, а теги пропадут, так как был указан Content-Type: text/html в коде обработчика.

Метод POST, параметр запроса name=Anonymous:

Hello, Anonymous

Метод PUT:

HTTP method PUT is not supported by this URL
В этой статье:
  • Неподдерживаемые методы
  • Пример: моделирование различного поведения функции при вызове с разными HTTP-методами
Language / Region
Вакансии
Политика конфиденциальности
Условия использования
Брендбук
© 2021 ООО «Яндекс.Облако»