REST API для приложения со Spring Boot, Kotlin и Gradle



Книга REST API для приложения со Spring Boot, Kotlin и Gradle

Я много раз пытался спроектировать API для своих приложений, и это всякий раз заканчивалось разочарованием по одной из этих причин:


  • Недостаточное понимание языка или фреймворка.
  • Неготовность платить за хостинг до запуска проекта.
  • Платформа без поддержки масштабирования.

Так что, столкнувшись со всеми этими проблемами, я решил написать REST API на Kotlin, используя фреймворк Spring Boot, а также Gradle в качестве поставщика зависимостей (вместо Maven). Как Android-разработчик, я уже знаком с Kotlin и Gradle. Spring Boot же, с другой стороны, предоставляет способ быстрой настройки API, а также содержит встроенный Tomcat. Еще одна сильная сторона Spring Boot  —  активное сообщество пользователей, которое уже имеет опыт в решении проблем масштабирования.


1. Создаем проект Spring Boot через генератор проектов Spring Boot со следующими параметрами.



На картинке видны параметры, которые использовал я. Пока что не нужно добавлять никаких зависимостей — этим займемся позже. Нажимаем на “Сгенерировать” (Generate) и получаем zip-файл с пустым проектом.


2. Открываем сгенерированный проект в IntelliJ Idea


На всякий случай: вот содержимое моего файла build.gradle.kts  —  просто чтобы убедиться, что все мы видим одно и то же. Благодаря знакомству с Gradle, мы можем распознать здесь такие элементы, как плагин Kotlin и зависимости, а также Java 1.8, благодаря которому в нашем проекте доступны функции языка Java 8.


3. Создаем первый контроллер


Контроллер  —  то, что обрабатывает запрос от клиента и возвращает ответ с требуемой информацией. Здесь вы найдете больше подробностей о контроллерах Spring.


Начнем с того, что добавим зависимости для всех веб-ресурсов Spring Boot (включая контроллеры) в наш build.gradle.kts:


implementation("org.springframework.boot:spring-boot-starter-web" )

После синхронизации Gradle перейдем к нашему классу HelloController. В демонстрационных целях я включил сюда несколько примеров того, как добавлять параметры, отправлять ответы со статусом 200 с объектами JSON, а также ошибки с пользовательскими сообщениями.


package com.cvillaseca.mobileapi.controller

import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
import org.springframework.web.bind.annotation.RestController
import kotlin.reflect.jvm.internal.impl.load.kotlin.JvmType

@RestController
@RequestMapping("/mobileApi")
class HelloController {
@RequestMapping(value = ["/helloWorld"], method = [(RequestMethod.GET)])
fun getHelloWordMessage(): ResponseEntity<String> =
ResponseEntity.ok("Hello World")

@RequestMapping(value = ["/helloWorld/{name}"], method = [(RequestMethod.GET)])
fun getHelloWordMessageWithName(
@PathVariable("name") name: String
): ResponseEntity<Any> =
if (name != "Cristian") {
ResponseEntity.ok(
HelloResponse(
message = "Hello $name",
name = name
)
)
} else {
ResponseEntity.badRequest().body("I am Cristian")
}
}

data class HelloResponse(
val message: String,
val name: String
)

Чтобы убедиться, что наш первый веб-сервис работает, нам сначала нужно развернуть его на своей локальной машине. Это мы можем сделать, запустив команду gradle bootRun. После этого проверяем, что всё работает ожидаемым образом, используя curl.


curl --location --request GET 'http://localhost:8080/mobileApi/helloWorld'

Если вы предпочитаете графический интерфейс, а также хотите, чтобы ваши API оставались организованными и синхронизированными, рекомендую тестировать API с помощью бесплатной программы Postman. На картинке ниже вы можете увидеть, как протестировать контроллер, который мы только что создали.



Вот и всё!




729   0  

Comments

    Ничего не найдено.