Nous réfléchissons à déplacer notre serveur d'API Rest (il est à l'intérieur du service web, sur Symfony PHP) vers Scala pour plusieurs raisons: vitesse, pas de surcharge, moins de CPU, moins de code, évolutivité, etc. Je ne connaissais Scala que plusieurs il y a quelques jours, mais j'ai apprécié ce que j'ai appris ces jours-ci avec le livre Scala et tous les articles et questions du blog (ce n'est pas si moche!)
J'ai les options suivantes:
- construire le serveur d'API Rest à partir de zéro
- utiliser un petit framework Web Scala comme Scalatra
- utiliser Lift
Certaines choses que je devrai utiliser: requêtes HTTP, sortie JSON, MySQL (données), OAuth, Memcache (cache), journaux, téléchargements de fichiers, statistiques (peut-être Redis).
Que recommanderais-tu?
Je vais recommander non filtré . C'est un framework Web idiomatique qui fait les choses "à la manière Scala" et qui est très beau.
la source
Jetez un œil à Xitrum (je suis son auteur), il fournit tout ce que vous avez énuméré. Son doc est assez étendue. De README:
Xitrum est un framework Web et un serveur Web Scala asynchrones et en cluster au-dessus de Netty et Hazelcast:
la source
J'ajouterais deux autres options: akka avec le support JAX-RS intégré, et simplement en utilisant JAX-RS directement (probablement l'implémentation Jersey). Bien que sans doute moins "Scala-y" que d'autres (en s'appuyant sur des annotations pour lier les paramètres et les chemins), JAX-RS est un plaisir à utiliser, résolvant proprement tous les problèmes de codage de service Web avec une empreinte minimale. Je ne l'ai pas utilisé via akka, je m'attendrais à ce qu'il soit excellent là-bas, obtenant une évolutivité impressionnante via son implémentation basée sur la continuation.
la source
Jetez un œil à Finch , une bibliothèque de combinateurs Scala pour la création de services HTTP Finagle . Finch vous permet de construire des points de terminaison HTTP complexes à partir du nombre de blocs de base prédéfinis. À l'instar des combinateurs d'analyseurs, les points de terminaison Finch sont faciles à réutiliser, à composer, à tester et à raisonner.
la source
Toutes les bonnes réponses jusqu'à présent. Un point en faveur de Lift est son RestHelper , qui peut faciliter l'écriture de méthodes API courtes et élégantes. De plus, toutes les autres choses que vous souhaitez faire doivent être assez simples à mettre en œuvre dans Lift. Cela étant dit, Memcache n'est peut-être pas nécessaire.
la source
Un peu tard sur la scène, mais je recommanderais certainement d'utiliser le framework Bowler pour la création d'API REST. Il est petit, au point et support de conversion de classe de cas automatique!
la source