de Miguel Lopez

Cum puteți crea un API Hello World cu Scala și Akka HTTP

Da, este încă un lucru.

Cum puteti crea un API Hello World cu Scala si
Fotografie de Blake Connally pe Unsplash

Akka este un popular set de instrumente bazat pe actori pentru crearea de aplicații simultane și distribuite în JVM. Aceste aplicații folosesc în principal Scala sau Java.

Are mai multe module care ajută la construirea unor astfel de aplicații, iar Akka HTTP este unul dintre ele.

Akka HTTP are atât utilități client, cât și server. Ne vom concentra pe server în acest tutorial.

Ar trebui să fiți familiarizat cu Scala și ar trebui să aveți SBT și IntelliJ configurate și instalate. Dacă nu este cazul, verificați documente oficiale.

Fără alte întrebări, să construim un API Hello World folosind Scala și Akka HTTP!

Configurarea proiectului

Simțiți-vă liber să clonați repo, asigurați-vă că utilizați ramura 2.1-review-project.

Dacă nu, vom folosi sbt 1.1.6 și Scala 2.12.6 . Verifică-ți build.properties și build.sbt fișiere pentru a vă asigura că versiunile de acolo se potrivesc cu acestea.

Să începem prin adăugarea dependențelor necesare. Deoarece HTTP Akka depinde de actori și fluxuri, va trebui să adăugăm și acele biblioteci.

Adăugați următorul fragment la sfârșitul fișierului build.sbt fişier:

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",)

Dacă vi se solicită să activați importul automat, faceți-o. În caz contrar, puteți deschide un terminal și cd în directorul rădăcină al proiectului dvs. Atunci fugi sbt update pentru a obține dependențele.

Importul automat se va asigura că vă actualizați proiectul de fiecare dată când anumite fișiere sunt actualizate, inclusiv build.sbt fişier.

Instantați dependențe

Să creăm un obiect Scala sub „src / main / scala” numit Server. Vom începe prin instanțierea dependențelor necesare pentru a crea un server cu Akka HTTP.

În primul rând, obiectul va extinde App trăsătură:

object Server extends App {}

Acest lucru ne va permite Server obiect care poate fi rulat.

Vom avea nevoie de o gazdă și un port pentru a lega serverul, așa că hai să le adăugăm acum:

val host = "0.0.0.0"val port = 9000

Deoarece Akka HTTP folosește actori și fluxuri Akka dedesubt, va trebui să le furnizăm și dependențele:

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

Chiar dacă nu trebuie să știți ce fac pentru a începe să dezvolte aplicații HTTP Akka, este întotdeauna bine să fiți conștienți de ce sunt.

Un ActorSystem este folosit pentru a gestiona actorii. Este folosit pentru crearea și căutarea lor. Actorii din același sistem au de obicei aceeași configurație.

ExecutionContext este însărcinat cu executarea Future s. Știe unde și cum ar trebui să le execute, de exemplu într-un pool de fire.

Și în cele din urmă, un ActorMaterializer este responsabil cu rularea fluxurilor.

Odată făcut acest lucru, ne putem crea traseul de salut!

Creați ruta

Pentru a ne crea ruta, vom folosi DSL de rutare Akka HTTP. Se bazează pe „straturi” a ceea ce se numește directivă. Pentru o imagine de ansamblu, nu ezitați să le navigați documente oficiale.

Adăugați ruta sub dependențe:

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

Avem un prim strat, în care încercăm să potrivim calea cererii primite ca „/ hello”. Dacă nu se potrivește, va fi respins.

Dacă se potrivește, va încerca să se potrivească interiorului „directivelor”. În cazul nostru, potrivim solicitările GET. Finalizăm ciclul de solicitare / răspuns cu un mesaj „Bună ziua, lume”.

Porniți serverul

Odată ce ruta noastră este creată, tot ce trebuie să facem este să pornim serverul:

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

Ne conectăm ruta la gazda și portul dat folosind HTTP Akka Http obiect.

Să ne conducem Server obiect, puteți să faceți clic dreapta pe el și să dați clic Rulați „Server”.

Acordați-i câteva secunde pentru a compila, apoi accesați un browser. Navigheaza catre http://localhost:9000/hello și ar trebui să vedeți „Bună ziua, lume!” mesaj.

Cum puteti crea un API Hello World cu Scala si

Mișto, nu-i așa?

Logare

Înainte de a încheia acest tutorial, vom adăuga înregistrarea de bază pe serverul nostru.

S-ar putea să fi observat că nu a existat niciun feedback când ne-am lansat Server obiect. Nu avem nici o idee dacă a reușit sau a eșuat.

Putem presupune că a funcționat, deoarece aplicația nu sa blocat.

Să adăugăm câteva înregistrări la acesta.

Dacă te uiți în bindAndHandle funcție din Http obiect, returnează un viitor de ServerBinding . Putem lega niște jurnale în viitor onComplete funcţie.

Hai să facem asta:

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}")}

Rulați Server din nou, și de data aceasta ar trebui să vedeți:

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

Înfășurându-se

În timp ce utilizarea Scala și Akka HTTP nu este cel mai rapid mod de a dezvolta API-uri, vă permite să integrați alte module Akka, cum ar fi actori, fluxuri, clustere și multe altele, facilitând dezvoltarea sistemelor rezistente și scalabile.

Acestea fiind spuse, este bine să rețineți că dezvoltarea unei aplicații folosind Scala și / sau Akka nu înseamnă neapărat că va fi rezistentă și scalabilă. Va trebui totuși să efectuați lucrări pentru a realiza acest lucru, dar este mai ușor decât cu alte tehnologii.

Dacă ți-a plăcut Akka HTTP, avem un curs gratuit care îți va începe drumul rapid în dezvoltarea API-urilor cu acesta. Veți construi un API pentru o aplicație Todo, explicat pas cu pas. Verifică! ??

Akka HTTP Quickstart
Aflați cum să creați aplicații web și API-uri cu Akka HTTP în acest curs gratuit!link.codemunity.io