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

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

  • Неподдерживаемые методы
  • Пример: моделирование различного поведения функции при вызове с разными HTTP-методами
  1. Разработка на Java
  2. Модель программирования
  3. Класс HttpServlet

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

Статья создана
Yandex Cloud
Обновлена 26 августа 2024 г.
  • Неподдерживаемые методы
  • Пример: моделирование различного поведения функции при вызове с разными HTTP-методами

Вы можете задать обработчик на Java, переопределив выбранные методы класса 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-методамиПример: моделирование различного поведения функции при вызове с разными HTTP-методами

Важно

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

Cloud Functions поддерживает Maven — систему управления зависимостями для языка Java.

Чтобы создать функцию:

  1. Создайте файл Handler.java по пути /src/main/java/Handler.java и файл pom.xml.
  2. Добавьте в ZIP-архив директорию /src и файл pom.xml.
  3. Загрузите ZIP-архив в Cloud Functions.

Файл pom.xml:

<project>
    <modelVersion>4.0.0</modelVersion>

    <groupId>my.company.app</groupId>
    <artifactId>servlet</artifactId>
    <version>1</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>

Файл 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

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

Предыдущая
Интерфейс YcFunction
Следующая
Spring Boot
Проект Яндекса
© 2025 ООО «Яндекс.Облако»