Выпьем Vodka
Moscow Scala Meetup #3
29 июля 2016
Алексей Фомкин, Data Monsters
Каждый раз, когда вы ленитесь прочитать доклад на митапе, Фомкин вынужден писать очередной велосипед
HTTP в Scala делает мне больно
- Высокий порог входа
- Много зависимостей
Spay и akka-http
-
Fast, lightweight HTTP Server
-
Elegant DSL for API Construction
-
Support for Servlet 3.0 Containers
-
SSL
-
Compression
-
Auth
Play
-
MVC
-
Templates
-
...
Ребята, мне просто нужно сходить в базу и отдать JSON!
Я не готов тратить месяцы на понимание тонкостей ваших нетленок!
И не готов думать о совместимости вашего поделья с другими подельями
По этому я убрал из обзора Finagle/Finch вообще
Colossus
implicit val system = IOSystem()
Server.basic("example-server", 9000) {
new HttpService(_) {
def handle = {
case request @ Get on Root =>
request.ok("Hello world!")
case request @ Get on Root / "echo" / str =>
request.ok(str)
}
}
}
Colossus
- Тянет за собой Akka
- Примеры из документации не компилируются
Http4s
val service = HttpService {
case GET -> Root / "hello" / name =>
Ok(s"Hello, $name.")
}
Изумительно!
Http4s
Ребята, ну зачем вы притянули Scalaz?
Vodka
import scala.concurrent.Future
import Vodka._
Vodka() {
case request <| GET -> Root / "hello" / name =>
val msg = s"Hello, comrade $name. Let's drink vodka."
Future.successful(msg)
}
Vodka
- Без зависимостей
- Менее 1000 строк кода
- Написана за вечер
- Для остального есть Nginx
Присоединяйтесь!
Вопросы?
Алексей Фомкин, Data Monsters
@fomkin
@yelbota
Let's drink vodka
By Aleksey Fomkin
Let's drink vodka
- 725