Простой бэкэнд
Бекэнд для DivKit можно развернуть с помощью сервиса Yandex Cloud Functions. Для этого понадобится учетная запись Yandex Cloud.
Создание функции на Kotlin
Начало работы с Yandex Cloud подробно описано в инструкции.
Сперва нужно создать саму функцию:
- В консоли управления перейдите в каталог, в котором хотите создать функцию.
- Выберите сервис Cloud Functions.
- Нажмите кнопку Создать функцию.
- Введите имя функции.
- Нажмите кнопку Создать.
- Выберите среду выполнения Kotlin.
- Нажмите кнопку Продолжить.
На экране появится редактор функции в котором нужно сделать следующее:
- Выберете вариант задания функции Редактор кода.
- Нажмите кнопку Создать файл.
- Назовите его
Handler.kt
. - Справа от списка файлов вставьте код:
package cloud.divkit
// Модель данных запроса
data class Request(
val httpMethod: String?,
val headers: Map<String, String> = mapOf(),
val body: String = ""
)
// Модель данных запроса
data class Response(
val statusCode: Int,
val body: String
)
// Обработчик запросов
fun handle(request: Request): Response {
return Response(200, card)
}
// DivKit верстка в формате JSON
private const val card = """
{
"log_id": "cloud_divkit",
"states": [
{
"state_id": 0,
"div": {
"type": "text",
"text": "Hello, Username!"
}
}
]
}
"""
- Укажите точку входа
cloud.divkit.Handler::handle
. Точка входа состоит из имени пакета, имени файла обработчика функции и метода. Допольнительную информацию можно найти в этой инструкции. - Нажмите кнопку Сохранить изменения.
Использование Kotlin DSL
Kotlin DSL представляет собой способ описания DivKit верстки непосредственно в коде Kotlin приложения. Чтобы им воспользоваться, нужно подключить внешнуюю зависимость.
Соберите небольшой проект:
- Создайте файл
build.gradle.kts
. - Укажите в нем следующее:
plugins {
kotlin("jvm") version "2.0.0"
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.fasterxml.jackson.core:jackson-annotations:2.18.3")
implementation("com.fasterxml.jackson.core:jackson-databind:2.18.3")
implementation("com.yandex.div:kotlin-json-builder:31.0.0")
}
- Создайте файл обработчика
src/main/kotlin/cloud/divkit/Handler.kt
аналогичный тому, что был сделал в параграфе с простой функцией. - Измените метод
handle(request: Request)
следующим образом:
fun handle(request: Request): Response {
val card = divan {
data(
logId = "greeting",
div = text("Hello, Username!")
)
}
return Response(200, card.toJson())
}
- Упакуйте указанные файлы в zip-архив.
Полный пример доступен по ссылке.
Теперь на его основе можно создать функцию:
- Создайте новую Cloud функцию так же, как это делалось в предыдущем разделе.
- В редакторе выберете способ задания ZIP-архив.
- Нажмите на кнопку Прикрепить файл.
- Укажите путь до созданного zip-архива.
- Задайте точку входа
cloud.divkit.Handler::handle
. - Нажмите кнопку Сохранить изменения.
Отображение результата
Ответ созданной функции можно проверить в демо-приложении DivKit:
- Выберете нужную функцию из списка.
- Скопируйте ссылку, указанную в пункте Ссылка для вызова.
- Откройте демо-приложение.
- Зайдите в раздел Demo (Android) или Playground (iOS).
- Вставьте ссылку.
- Нажмите кнопку Show the reult.
Стоит обратить внимание на то, что по умолчанию все функции являются приватными и для доступа к ним нужен соответствующий токен. Чтобы демо-приложение смогло отобразить верстку, нужно сделать функцию публичной.
Полезные ссылки
- Начало работы с Yandex Cloud
- Инструкция по созданию функций на Kotlin
- Простая Cloud функция c DivKit версткой
- Cloud функция с использованием Kotlin DSL
Узнать больше
Следите за новостями DivKit в Telegram-канале: http://t.me/divkit_news.
Также вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.