Предисловие
Здравствуйте, уважаемые читатели. Тема, которую я раскрою была уже неоднократно раскрыта и до меня. Но я думаю, что кому-то это может быть полезно. Мы будем делать простейший бек на Kotlin + Spring Boot + mySql.
Предыстория
Мне задали в институте курсовой проект. Надо было написать клиент-серверное приложение и мой выбор пал на Kotlin и Spring Boot для бека. А как клиент я написал приложение для iOS. Получилось достаточно просто, но были мелочные проблемы в настройке бека.
Для кого это?
Пост предназначен для тех кто хочет использовать Spring Boot вместе с Kotlin и им лень разбираться.
Начало
Для сборки проекта я решил использовать Gradle. Им же я и подтягивал все необходимые мне зависимости. На самом деле зависимостей было не так много — Spring Boot и драйвер для mySql. Больше ничего не потребуется.
Ниже можно увидеть конфигурационный файл для Gradle.
plugins {
id("org.springframework.boot") version "2.3.0.RELEASE"
id("io.spring.dependency-management") version "1.0.9.RELEASE"
kotlin("jvm") version "1.3.72"
kotlin("plugin.spring") version "1.3.72"
kotlin("plugin.jpa") version "1.3.61"
}
group = "org.arh.TaxiServiceServer"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
dependencies {
implementation("com.fasterxml.jackson.core:jackson-core:2.11.0")
implementation("com.fasterxml.jackson.core:jackson-databind:2.11.0")
implementation("org.json:json:20090211")
implementation("mysql:mysql-connector-java")
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
Напишем немного кода
После того, как все зависимости были успешно установлены можно и код пописать. Для начала нужно создать класс-контролер для запросов.
После того, как класс будет создан нужно добавить ему нотификацию. Выйдет примерно вот так.
@RestController
@RequestMapping("/entityDelete")
class EntityDeleteController {}
Я делал всё это в Idea. И благодаря встроенной настройке в виде Spring Services можно не создавать класс, из которого будет запускаться приложение. За нас всё сделают сервисы. Важно только объявить то, что контроллер является REST контроллером и указать путь, который контроллер будет его обрабатывать.
Теперь самое интересное — добавим обработчики отдельных запросов.
@RestController
@RequestMapping("/entityPostAddData")
class EntityPostController {
@PostMapping("/addCall")
fun addCall(@RequestBody model : CallsModel) {
val request = model.toSqlInsertRequest()
DataBaseController().executeUpdate(request)
}
}
С помощью этого метода можно будет отправлять post запросы на сервер и обрабатывать их. Отправить такой запрос можно по адресу — localhost:8080/entityPostAddData/addCall.
Чтобы сделать метод для get запроса достаточно изменить PostMapping на GetMapping и по аналогии с другими методами.
Параметры метода addCall означает то, что должно придти в теле post запроса. Это не обязательно должен быть какой-либо кастомный класс или структура, это может быть и примитивные классы, такие как String, Int и так далее.
В теле метода происходит обработка данных.
Заключение
По сути на этом всё. Конечно есть достаточно много различных нотификаций и много другого, но для начала этого более чем достаточно. В основном и используется get и post запросы. Другие запросы используются заметно реже, но по первой же ссылке в гугле можно будет найти информацию.
Я посчитал, что будет достаточно очень короткого гида по созданию такого приложения, здесь можно встретить то, что поможет при старте.
Послесловие
Большое спасибо за прочтение данной статьи. Я понимаю, что это далеко не новая тема, но я подумал, что я смогу внести небольшой вклад и оказать небольшую помощь тому, кто увидит данную статью. Большое спасибо и всего наилучшего!