Модель программирования на языке Java
Сервис Cloud Functions предоставляет четыре модели программирования на языке Java — с помощью интерфейсов Function и YcFunction, класса HttpServlet, а также Spring Boot. Первые три способа задания обработчика функций подразумевают написание своих реализаций данных интерфейсов или классов, а последний — загрузку приложения в исходном виде без каких-либо изменений.
Разница между моделями Function и YcFunction состоит в наличии контекста вызова. Если, например, нужно взаимодействовать с сервисами Yandex Cloud при помощи SDK, то рекомендуем выбрать YcFunction. А модель использования класса HttpServlet позволяет получить полный контроль над возвращаемым значением и HTTP
-методом, с помощью которого была вызвана функция, а также, как и модель YcFunction
, дает доступ к контексту вызова.
Для моделей Function и YcFunction есть два обособленных типа: byte[]
и String
. Работа с ними отличается от работы с другими типами. При их использовании в качестве типа аргумента функции-обработчика среда выполнения не будет преобразовывать входящий запрос в JSON
-интерпретацию для этих типов, а передаст его напрямую в пользовательскую функцию-обработчик. Исключением являются случаи, когда используется параметр ?integration=raw.
Примечание
В качестве библиотеки для сериализации и десериализации из JSON
используется jsoniter
Требования к обработчику
Вне зависимости от выбранной модели загрузка проекта осуществляется одним из способов: в виде исходного кода, JAR-архива или Maven-проекта. Также на класс, содержащий функцию-обработчик, применяются следующие требования:
-
Он должен быть публичным.
-
У класса должен быть публичный конструктор без аргументов.
По умолчанию он есть. Но если вы создали свой конструктор, принимающий аргументы, создайте также конструктор, не принимающий никаких аргументов.
-
Он не должен быть обобщенным
.