Статьи Утилиты Telegram YouTube RuTube Отзывы

Статьи с тэгом «Kotlin»

Локализация текста в Spring Boot

10 декабря 2024

Тэги: файлы, Spring Boot, руководство, Kotlin, rest, gradle.

При разработке приложения, ориентированного на мировой рынок, сразу следует закладывать поддержку нескольких языков. Добавление новой локализации должно выполняться быстро и при этом не требовать значительного рефакторинга. К счастью, если вы разрабатываете приложение на Spring Boot, то реализовать такую поддержку довольно просто.

Читать полностью...

CrudRepository на Kotlin

20 ноября 2024

Тэги: Spring Data, SQL, Kotlin, rest, gradle, json, Hibernate.

Рассмотрим пример rest-сервиса, написанного на Kotlin и работающего с базой данных с помощью Spring Data JPA. Rest-сервис состоит из трёх слоёв: слой работы с БД, сервисный слой и контроллер. Мы пойдём последовательно по слоям, начиная с нижнего.

В качестве примера возьмём сервис, работающий с музыкальными группами. У каждой группы будет три основных параметра: название, количество участников и дата основания.

Заготовку проекта удобно сгенерить через Spring Initializr. Там достаточно выбрать тип проекта – Gradle – Kotlin, язык – Kotlin. В качестве dependency надо добавить Spring Web (функциональность rest-контроллеров), Spring Data JPA (работа с БД), Validation (валидация входящих rest-запросов) и драйвер вашей СУБД. Для удобства мы будем использовать H2, т.к. она автоматически создаётся в оперативной памяти и не требует никакой настройки. Но вы можете использовать любую другую СУБД. Достаточно подключить нужный драйвер в файле build.gradle.kts и прописать параметры подключения в файле application.yml.

Затем нажимаем Generate – и скачиваем архив с заготовкой проекта. В итоге файл build.gradle.kts в секции dependencies помимо стандартных должен содержать следующие зависимости:

Читать полностью...

Springdoc для документации REST API

18 ноября 2024

Тэги: Spring Boot, руководство, Kotlin, gradle, rest.

Ранее я уже публиковал статью Подключение Swagger к Spring Boot для создания документации по REST API. К сожалению, с последними версиями Spring Boot описанный там подход уже не работает, т.к. на смену springfox-swagger пришёл springdoc. По функционалу springdoc предоставляет всё то же самое, но аннотации для разметки классов и методов нужно использовать другие. Поэтому в данной статье подробно рассмотрим пример документирования REST API с помощью springdoc и его отличия от springfox.

Springdoc – это библиотека для проекта на Spring Boot, которая автоматически будет генерировать документацию по вашему REST API на основании исходного кода и специальных аннотаций. Таким образом, ваша документация будет всегда актуальной и её не нужно как-то дополнительно актуализировать каждый раз при изменении исходников.

Читать полностью...

Аудит изменений в Spring Data JPA

16 ноября 2024

Тэги: SQL, gradle, rest, Kotlin, Spring Data.

В промышленных системах бывает важно знать, кто и когда сделал изменения конкретной сущности. Прежде всего нас интересует такая информация:

  • кто создал запись
  • дата создания
  • автор последних изменений
  • дата последних изменений

Структура таблицы

Рассмотрим пример, в котором у нас есть таблица company. У компании есть id (автоинкремент) и название.

Поля аудита обычно скрыты от рядовых пользователей, но доступны администраторам системы. Скрипт создания этой таблицы может выглядеть так:

Читать полностью...

Алгоритм поиска чисел Фибоначчи

15 ноября 2024

Тэги: алгоритмы, Java, головоломки, Kotlin.

Немного теории

На собеседованиях по алгоритмам любят давать такую задачку, как нахождение чисел из последовательности Фибоначчи. Эта числовая последовательность названа в честь Леонардо Пизанского – известного математика Средневековья.

Сама последовательность довольно проста. Она состоит из целых положительных чисел, где каждый следующий элемент равен сумме двух предыдущих. Например, 2 = 1 + 1, 3 = 2 + 1, 5 = 3 + 2.

Последовательность начинается с 0 и 1:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ...

Иногда в этой последовательности принято пропускать 0 и начинать её с двух единиц, однако официально она начинается именно с 0.

Читать полностью...

Обработка ошибок в GraphQL

13 мая 2024

Тэги: Collections, Spring Boot, руководство, Kotlin, GraphQL, json.

Продолжаем цикл статей про работу с GraphQL в проекте, написанном на Kotlin и Spring Boot. В первой статье GraphQL в Spring Boot мы создали проект, который возвращает информацию о книгах и их авторах. Во второй части Мутации в GraphQL мы научились менять данные.

Обработка ошибок в Spring Boot Graphql

Теперь рассмотрим как можно обрабатывать ошибки в GraphQL и менять их формат.

Читать полностью...

Мутации в GraphQL

5 апреля 2024

Тэги: Collections, Spring Boot, GraphQL, Kotlin, json.

В прошлой статье GraphQL в Spring Boot мы создали приложение на Kotlin с API в формате GraphQL, в котором есть две сущности: Книга и Автор. Также научились расширять стандартный набор типов graphql и решили «проблему N+1» с помощью пакетной подгрузки дочерних сущностей. Исходники проекта доступны на github.

Теперь давайте рассмотрим как можно менять данные с помощью GraphQL.

Мутации

Для изменения данных в GraphQL используются так называемые «мутации». По сути это обычные методы со входными и выходными параметрами, доступные через протокол взаимодействия GraphQL.

Мутация – изменение данных в GraphQL
Читать полностью...

GraphQL в Spring Boot

27 марта 2024

Тэги: Spring Boot, руководство, gradle, Kotlin, Collections, GraphQL, json.

Логотип GraphQL

GraphQL – это стандарт клиент-серверного взаимодействия, который позволяет довольно гибко запрашивать данные с сервера. Основное отличие от традиционных REST-запросов состоит в том, что клиент сам выбирает, какие поля он будет запрашивать у сервера, тогда как REST предполагает заранее определённый фиксированный формат. При этом сервер будет подгружать из хранилища ровно те поля, которые необходимы и ничуть не больше.

Читать полностью...

Inline-кнопки в telegram-боте

29 декабря 2023

Тэги: Spring Boot, руководство, Kotlin.

В предыдущей статье Telegram-бот на Spring Boot мы написали telegram-бота на Kotlin и Spring Boot. Мы рассмотрели, как добавляются простые команды, команды с параметрами, а также научились отображать простые кнопки в клиентском приложении telegram.

Но обычные кнопки являются не более чем заранее подготовленными текстовыми сообщениями пользователя. Они не несут никакого контекста и потому не подходят для более сложных сценариев взаимодействия. Однако пришла пора добавить в наш бот чуть больше интерактива!

Добавляем поддержку обратных вызовов

Предположим, вы решили написать онлайн-квиз в виде Telegram-бота. Бот должен выдать вопрос и какие-то варианты ответа к нему. Если это делать с помощью обычных кнопок, то довольно сложно сопоставить ответ пользователя с конкретным вопросом, т.к. обычные кнопки не хранят контекст. Но есть встраиваемые (inline) кнопки, которые относятся непосредственно к сообщению. Они добавляют гораздо больше интерактива и именно их вы видели, когда регистрировали бота в BotFather.

inline-кнопки в Bot Father

Встроенные кнопки взаимодействуют с ботом в фоновом режиме при помощи обратных вызовов (callback). Поэтому имеет смысл создать отдельный набор классов и интерфейсов для их поддержки.

Читать полностью...

Telegram-бот на Spring Boot

27 декабря 2023

Тэги: Spring Boot, Kotlin, gradle, YouTube, руководство, yaml.

В настоящее время чат-боты в Telegram не делал только ленивый. Они плотно вошли в нашу жизнь и почти у каждой компании есть бот, решающий какие-то задачи бизнеса, тем самым разгружая «живых» сотрудников. После прочтения этой статьи вы сможете создать и запустить свой чат-бот в Telegram.

Telegram-бот на Kotlin и Spring Boot

Пример готового приложения можно найти на github.

Регистрация бота в Telegram

Сперва нам нужно выбрать подходящее имя для бота и зарегистрировать его в Telegram. Регистрация происходит через главного бота по имени BotFather. Просто найдите его через поиск контактов Telegram. В чате вы всегда можете понять, что общаетесь с ботом, т.к. рядом с его именем есть подпись «bot». BotFather позволяет управлять вашими ботами в диалоговом режиме. Команды боту представляют собой текст, начинающийся со слеша.

Читать полностью...

Далее ❯