web-dev-qa-db-ja.com

Scala Rest APIサーバーのフレームワーク?

Rest APIサーバー(Symfony PHPのWebサービス内)をScalaに移動することを考えています。理由は、速度、オーバーヘッドなし、CPUの削減、コードの削減、スケーラビリティなどです。 。Scala=は数日前までは知りませんでしたが、最近学習していることをScala本とすべてのブログの投稿と質問(それほど見苦しくありません!)

次のオプションがあります。

  • rest APIサーバーをゼロから構築する
  • Scalatra のようなWebフレームワークのような小さなScala
  • liftを使用

使用する必要があるもの:HTTPリクエスト、JSON出力、MySQL(データ)、OAuth、Memcache(キャッシュ)、ログ、ファイルアップロード、統計(Redisなど)。

あなたは何をお勧めします?

103
fesja

順不同:

86
oluies

nfiltered をお勧めします。これは、「Scala方法」」を実行する非常に美しい慣用的なWebフレームワークです。

22
Max A.

Xitrum (私はその著者です)を見てください。リストされているすべてのものが提供されます。 ドキュメント は非常に広範囲です。 READMEから:

Xitrumは非同期でクラスター化されたScala NettyおよびHazelcast上のWebフレームワークおよびWebサーバー:

  • 注釈は、JAX-RSの精神で、URLルートに使用されます。すべてのルートを1か所で宣言する必要はありません。
  • 非同期、Nettyの精神。
  • セッションは、Cookieまたはクラスター化されたHazelcastに保存できます。
  • インプロセスキャッシュとクラスター化キャッシュでは、個別のキャッシュサーバーは必要ありません。
  • インプロセスおよびクラスター化されたCometでは、別個のCometサーバーは必要ありません。
15
Ngoc Dao

さらに2つのオプションを追加します。JAX-RSサポートが組み込まれたakkaと、単純にJAX-RSを直接使用する(おそらくJersey実装)。間違いなく他のものよりも「Scala-y」(パラメータとパスをバインドするための注釈に依存)よりも少ない間、JAX-RSは使用する喜びであり、最小限のフットプリントでWebサービスコーディングのすべての問題をきれいに解決します。私はakkaを介して使用したことはありませんが、継続ベースの実装により優れた拡張性が得られることを期待しています。

7
Dave Griffith

Finch 、a Scala HTTPサービスを構築するためのコンビネータライブラリ Finagle HTTPサービスを見てください。Finchでは、事前定義された基本ブロックの数パーサーコンビネーターと同様に、フィンチエンドポイントは再利用、構成、テスト、および推論が簡単です。

4

これまでのすべての良い答え。 Liftが好む点の1つは RestHelper です。これにより、短くてエレガントなAPIメソッドを非常に簡単に記述できます。さらに、Liftで実装する他のすべてのことは非常に簡単です。そうは言っても、Memcacheは必要ないかもしれません。

3
pr1001

少し遅れましたが、 Bowler フレームワークを使用してREST APIを作成することをお勧めします。

2
cracked_all