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. На картинке ниже вы можете увидеть, как протестировать контроллер, который мы только что создали.

Вот и всё!


Перевод статьи Cristian Villaseca: How to create a REST API for your App with Spring Boot, Kotlin & Gradle (Part 1: Initial setup & Controller)


Поделиться статьей:


Вернуться к статьям

Комментарии

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