Estamos pensando em mover nosso Rest API Server (está dentro do serviço web, em Symfony PHP) para Scala por vários motivos: velocidade, sem sobrecarga, menos CPU, menos código, escalabilidade, etc. Eu não conhecia Scala até vários dias atrás, mas tenho gostado do que tenho aprendido esses dias com o livro Scala e todos os posts e perguntas do blog (não é tão feio!)
Tenho as seguintes opções:
- construir o Rest API Server do zero
- usar um pequeno framework web Scala como o Scalatra
- usar elevador
Algumas coisas que terei que usar: solicitações HTTP, saída JSON, MySQL (dados), OAuth, Memcache (cache), Logs, uploads de arquivos, estatísticas (talvez Redis).
O que você recomendaria?
Vou recomendar o Unfiltered . É uma estrutura idiomática da Web que faz as coisas "do jeito Scala" e é muito bonita.
fonte
Dê uma olhada no Xitrum (sou o autor), ele fornece tudo o que você listou. Sua documentação é bastante extensa. Do README:
Xitrum é um framework web Scala assíncrono e clusterizado e servidor web além do Netty e Hazelcast:
fonte
Eu adicionaria mais duas opções: akka com suporte JAX-RS integrado e simplesmente usando JAX-RS diretamente (provavelmente a implementação Jersey). Embora indiscutivelmente menos "Scala-y" do que outros (contando com anotações para vincular parâmetros e caminhos), JAX-RS é uma alegria de usar, resolvendo de forma limpa todos os problemas de codificação de serviço da web com pegada mínima. Eu não usei via akka, eu diria que é excelente lá, obtendo escalabilidade impressionante por meio de sua implementação baseada em continuação.
fonte
Dê uma olhada em Finch , uma biblioteca combinadora Scala para construir serviços HTTP Finagle . Finch permite que você construa terminais HTTP complexos a partir do número de blocos básicos predefinidos. Da mesma forma que os combinadores de analisador, os endpoints da Finch são fáceis de reutilizar, compor, testar e raciocinar.
fonte
Todas as boas respostas até agora. Um ponto a favor do Lift é seu RestHelper , que pode tornar muito fácil escrever métodos de API curtos e elegantes. Além disso, todas as outras coisas que você deseja fazer devem ser bem simples de implementar no Lift. Dito isso, o Memcache pode não ser necessário.
fonte
Um pouco tarde na cena, mas eu definitivamente recomendaria usar a estrutura Bowler para a criação de APIs REST. É pequeno, direto e suporte de conversão automática de classe de caso!
fonte