Как вы можете создать Hello World API с помощью Scala и Akka HTTP

1656550329 kak vy mozhete sozdat hello world api s pomoshhyu scala

от Мигеля Лопеса

Да, это еще дело.

ws5H0lYzh1Kol7Aum0Up1pW9eiDRpXHoKkcT
Фото Блейка Конналли на Unsplash

Akka – популярный набор инструментов на основе актеров для создания параллельных и распределенных приложений в JVM. Эти программы предпочтительно используют Scala или Java.

Он имеет несколько модулей, которые помогают создавать такие приложения и Akka HTTP является одним из них.

Akka HTTP должна утилиты как на стороне клиента, так и на стороне сервера. В этом учебнике мы сосредоточимся на сервере.

Вы должны быть знакомы с Scala, и у вас должны быть установлены и установлены SBT и IntelliJ. Если это не так, проверьте официальные документы.

Без лишних разговоров, давайте создадим API hello world с помощью Scala и Akka HTTP!

Настройка проекта

Не стесняйтесь клонировать репо, убедитесь, что вы используете ветку 2.1-review-project.

Если нет, мы будем использовать sbt 1.1.6 и Scala 2.12.6 . Проверьте свой build.properties и build.sbt файлы, чтобы убедиться, что существующие версии соответствуют этим.

Начнём с добавления необходимых зависимостей. Поскольку Akka HTTP зависит от актеров и потоков, нам также нужно будет добавить эти библиотеки.

Добавьте следующий фрагмент в конце вашего build.sbt файл:

libraryDependencies ++= Seq(  "com.typesafe.akka" %% "akka-actor" % "2.5.13",  "com.typesafe.akka" %% "akka-stream" % "2.5.13",  "com.typesafe.akka" %% "akka-http" % "10.1.3",)

Если вам будет предложено включить автоматический импорт, сделайте это. В противном случае вы можете открыть терминал и cd в корневой каталог вашего проекта. Тогда беги sbt update чтобы получить зависимости.

Автоматический импорт обязательно будет обновлять ваш проект каждый раз, когда обновляются определенные файлы, в том числе файлы build.sbt файл.

Создавайте экземпляры зависимостей

Давайте создадим объект Scala под заглавием “src/main/scala”. Server. Мы начнем с создания экземпляров зависимостей, необходимых для создания сервера из Akka HTTP.

Во-первых, объект расширит App черта:

object Server extends App {}

Это позволит нашим Server объект, который можно запустить.

Нам понадобится хост и порт для привязки сервера, поэтому давайте добавим их сейчас:

val host = "0.0.0.0"val port = 9000

Поскольку Akka HTTP использует актеры и потоки Akka под ним, нам также нужно будет предоставить их зависимость:

implicit val system: ActorSystem = ActorSystem("helloworld")implicit val executor: ExecutionContext = system.dispatcherimplicit val materializer: ActorMaterializer = ActorMaterializer()

Даже если вам не нужно знать, что они делают, чтобы начать разрабатывать HTTP программы Akka, всегда хорошо знать, для чего они предназначены.

An ActorSystem используется для управления актерами. Он используется для их создания и поиска. Актеры в одной системе обычно имеют одинаковую конфигурацию.

The ExecutionContext отвечает за исполнение Future с. Он знает, где и как он должен их выполнять, например, в пуле потоков.

И, наконец, ан ActorMaterializer отвечает за текущие потоки.

После этого мы можем создать наш приветственный маршрут!

Создайте маршрут

Для создания нашего маршрута мы используем DSL маршрутизации Akka HTTP. Она основана на «слоях» того, что называется директивой. Чтобы получить обзор, не стесняйтесь просматривать их официальные документы.

Добавьте маршрут ниже зависимостей:

def route = path("hello") {  get {    complete("Hello, World!")  }}

У нас есть первый уровень, где мы пытаемся сопоставить путь входящего запроса как «/hello». Если он не отвечает, он будет отклонен.

Если он отвечает, он постарается соответствовать внутренним «директивам». В нашем случае мы сверяем запросы GET. Мы завершаем цикл запроса/ответа сообщением Hello, World.

Запустите сервер

После создания нашего маршрута все, что нам нужно сделать, это запустить сервер:

Http().bindAndHandle(route, host, port)

Мы привязываем наш маршрут к данному хосту и порту с помощью Akka HTTP Http объект.

Чтобы запустить нашу Server объекта, вы можете щелкнуть правой кнопкой мыши и нажать Запустить «Сервер».

Дайте ему пару секунд для компиляции, затем перейдите к браузеру. Перейдите к и вы должны увидеть наше «Привет, мир!» сообщения.

EZYjgm5uULRp-qqC1upw4Q8kGcDad7q4BeXN

Круто, не правда ли?

Заготовка леса

Прежде чем закончить учебник, мы добавим базовое ведение журнала на наш сервер.

Вы могли заметить, что не было обратной связи, когда мы запускали наш Server объект. Мы не знаем, удалось это или не удалось.

Мы можем лишь предположить, что это сработало, поскольку программа не потерпела сбоя.

Давайте добавим в него регистрацию.

Если вы заглянете в bindAndHandle функция от Http объекта, он возвращает будущее ServerBinding . Мы можем подключить несколько журналов к будущему onComplete функция.

Давайте сделаем это:

val bindingFuture = Http().bindAndHandle(route, host, port)bindingFuture.onComplete {  case Success(serverBinding) => println(s"listening to ${serverBinding.localAddress}")  case Failure(error) => println(s"error: ${error.getMessage}")}

Запустите Server снова, и на этот раз вы должны увидеть:

listening to /0:0:0:0:0:0:0:0:9000

Подведению

Хотя использование Scala и Akka HTTP не является самым быстрым способом разработки API, оно позволяет интегрировать другие модули Akka, такие как актеры, потоки, кластеры и т.д., что облегчает разработку устойчивых и масштабируемых систем.

Сказав это, следует иметь в виду, что разработка программы с помощью Scala и/или Akka не обязательно означает, что она будет устойчивой и масштабируемой. Для этого вам все равно нужно будет проделать работу, но это проще, чем с другими технологиями.

Если вам понравился Akka HTTP, у нас есть бесплатный курс, который быстро начнет ваш путь к разработке API с его помощью. Вы создадите API для программы Todo, объясняя шаг за шагом. Проверь! ??

Akka HTTP Quickstart
Узнайте, как создать веб-приложения и API с помощью Akka HTTP в этом бесплатном курсе!link.codemunity.io

Добавить комментарий

Ваш адрес email не будет опубликован.