Простой бэкэнд

Бекэнд для DivKit можно развернуть с помощью сервиса Yandex Cloud Functions. Для этого понадобится учетная запись Yandex Cloud.

Создание функции на Kotlin

Начало работы с Yandex Cloud подробно описано в инструкции.

Сперва нужно создать саму функцию:

  1. В консоли управления перейдите в каталог, в котором хотите создать функцию.
  2. Выберите сервис Cloud Functions.
  3. Нажмите кнопку Создать функцию.
  4. Введите имя функции.
  5. Нажмите кнопку Создать.
  6. Выберите среду выполнения Kotlin.
  7. Нажмите кнопку Продолжить.

На экране появится редактор функции в котором нужно сделать следующее:

  1. Выберете вариант задания функции Редактор кода.
  2. Нажмите кнопку Создать файл.
  3. Назовите его Handler.kt.
  4. Справа от списка файлов вставьте код:
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!"
      }
    }
  ]
}
"""
  1. Укажите точку входа cloud.divkit.Handler::handle. Точка входа состоит из имени пакета, имени файла обработчика функции и метода. Допольнительную информацию можно найти в этой инструкции.
  2. Нажмите кнопку Сохранить изменения.

Использование Kotlin DSL

Kotlin DSL представляет собой способ описания DivKit верстки непосредственно в коде Kotlin приложения. Чтобы им воспользоваться, нужно подключить внешнуюю зависимость.
Соберите небольшой проект:

  1. Создайте файл build.gradle.kts.
  2. Укажите в нем следующее:
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")
}
  1. Создайте файл обработчика src/main/kotlin/cloud/divkit/Handler.kt аналогичный тому, что был сделал в параграфе с простой функцией.
  2. Измените метод handle(request: Request) следующим образом:
fun handle(request: Request): Response {
    val card = divan {
        data(
            logId = "greeting",
            div = text("Hello, Username!")
        )
    }
    return Response(200, card.toJson())
}
  1. Упакуйте указанные файлы в zip-архив.

Полный пример доступен по ссылке.

Теперь на его основе можно создать функцию:

  1. Создайте новую Cloud функцию так же, как это делалось в предыдущем разделе.
  2. В редакторе выберете способ задания ZIP-архив.
  3. Нажмите на кнопку Прикрепить файл.
  4. Укажите путь до созданного zip-архива.
  5. Задайте точку входа cloud.divkit.Handler::handle.
  6. Нажмите кнопку Сохранить изменения.

Отображение результата

Ответ созданной функции можно проверить в демо-приложении DivKit:

  1. Выберете нужную функцию из списка.
  2. Скопируйте ссылку, указанную в пункте Ссылка для вызова.
  3. Откройте демо-приложение.
  4. Зайдите в раздел Demo (Android) или Playground (iOS).
  5. Вставьте ссылку.
  6. Нажмите кнопку Show the reult.

Стоит обратить внимание на то, что по умолчанию все функции являются приватными и для доступа к ним нужен соответствующий токен. Чтобы демо-приложение смогло отобразить верстку, нужно сделать функцию публичной.

Полезные ссылки

Узнать больше

Следите за новостями DivKit в Telegram-канале: http://t.me/divkit_news.

Также вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.

Репозиторий DivKit

Предыдущая