Kami berpikir untuk memindahkan Rest API Server kami (ada di dalam layanan web, pada Symfony PHP) ke Scala karena beberapa alasan: kecepatan, tidak ada overhead, CPU lebih sedikit, kode lebih sedikit, skalabilitas, dll. Saya tidak tahu Scala sampai beberapa beberapa hari yang lalu tetapi saya menikmati apa yang telah saya pelajari akhir-akhir ini dengan buku Scala dan semua posting blog serta pertanyaan (tidak terlalu jelek!)
Saya memiliki opsi berikut:
- membangun Rest API Server dari awal
- menggunakan kerangka kerja web Scala kecil seperti Scalatra
- gunakan Lift
Beberapa hal yang harus saya gunakan: Permintaan HTTP, output JSON, MySQL (data), OAuth, Memcache (cache), Logs, File uploads, Stats (mungkin Redis).
Apa yang akan Anda rekomendasikan?
Saya akan merekomendasikan Unfiltered . Ini adalah kerangka kerja web idiomatik yang melakukan sesuatu dengan "cara Scala" dan sangat indah.
sumber
Lihatlah Xitrum (saya penulisnya), ini menyediakan semua yang Anda daftarkan. Dokumennya cukup luas. Dari README:
Xitrum adalah kerangka kerja web dan server web Scala asinkron dan berkerumun di atas Netty dan Hazelcast:
sumber
Saya akan menambahkan dua opsi lagi: akka dengan dukungan JAX-RS built-in, dan hanya menggunakan JAX-RS secara langsung (mungkin implementasi Jersey). Meskipun bisa dibilang kurang "Scala-y" daripada yang lain (mengandalkan anotasi untuk mengikat parameter dan jalur), JAX-RS sangat menyenangkan untuk digunakan, dengan rapi menyelesaikan semua masalah pengkodean layanan web dengan jejak minimal. Saya belum menggunakannya melalui akka, saya akan mengantisipasinya menjadi sangat baik di sana, mendapatkan skalabilitas yang mengesankan melalui implementasi berbasis kelanjutannya.
sumber
Lihat Finch , pustaka kombinator Scala untuk membuat layanan HTTP Finagle . Finch memungkinkan Anda membuat titik akhir HTTP yang kompleks dari jumlah blok dasar yang telah ditentukan sebelumnya. Mirip dengan kombinator parser, titik akhir Finch mudah digunakan kembali, dibuat, diuji, dan ditimbang.
sumber
Semua jawaban bagus sejauh ini. Satu hal yang disukai Lift adalah RestHelper - nya , yang membuatnya cukup mudah untuk menulis metode API yang singkat dan elegan. Selain itu, semua hal lain yang ingin Anda lakukan harus cukup jelas untuk diterapkan di Lift. Karena itu, Memcache mungkin tidak diperlukan.
sumber
Sedikit terlambat di tempat kejadian tetapi saya pasti akan merekomendasikan menggunakan kerangka kerja Bowler untuk pembuatan REST API. Ini kecil, to the point dan dukungan konversi kelas kasus otomatis!
sumber