Мы думаем о переносе нашего Rest API Server (он находится внутри веб-службы на Symfony PHP) на Scala по нескольким причинам: скорость, отсутствие накладных расходов, меньшее количество ЦП, меньше кода, масштабируемость и т. Д. Я не знал Scala до тех пор, пока несколько дней назад, но мне нравится то, что я изучал в эти дни, с помощью книги Scala, всех сообщений и вопросов в блогах (это не так уж и некрасиво!)
У меня есть следующие варианты:
- построить Rest API Server с нуля
- использовать крошечный веб-фреймворк Scala, например Scalatra
- использовать Лифт
Некоторые вещи, которые мне придется использовать: HTTP-запросы, вывод JSON, MySQL (данные), OAuth, Memcache (кеш), журналы, загрузка файлов, статистика (возможно, Redis).
Что бы вы порекомендовали?
Я буду рекомендовать Unfiltered . Это идиоматический веб-фреймворк, который делает все "по-Scala" и очень красив.
источник
Взгляните на Xitrum (я его автор), он предоставляет все, что вы перечислили. Его документ довольно обширен. Из README:
Xitrum - это асинхронный кластерный веб-фреймворк и веб-сервер Scala поверх Netty и Hazelcast:
источник
Я бы добавил еще два варианта: akka со встроенной поддержкой JAX-RS и просто использование JAX-RS напрямую (вероятно, реализация Jersey). Хотя JAX-RS, возможно, менее «Scala-y», чем другие (полагающийся на аннотации для привязки параметров и путей), использование JAX-RS доставляет удовольствие, поскольку оно решает все проблемы кодирования веб-сервисов с минимальными затратами. Я не использовал его через akka, я ожидал, что он будет отличным, получая впечатляющую масштабируемость за счет реализации на основе продолжения.
источник
Взгляните на Finch , библиотеку комбинаторов Scala для создания HTTP-сервисов Finagle . Finch позволяет создавать сложные конечные точки HTTP из числа предопределенных базовых блоков. Подобно комбинаторам парсеров, конечные точки Finch легко повторно использовать, составлять, тестировать и обдумывать.
источник
Пока все хорошие ответы. Одним из плюсов Lift является его RestHelper , который позволяет легко писать короткие элегантные методы API. Кроме того, все остальное, что вы хотите сделать, должно быть достаточно простым для реализации в Lift. При этом Memcache может и не понадобиться.
источник
Немного поздно, но я определенно рекомендую использовать среду Bowler для создания REST API. Он небольшой, по существу, и поддержка автоматического преобразования case class!
источник