※雑多なメモなので誤りがあるかもしれませんことをご了承ください
lagomってなに?
「まさマイクロサービスのフレームワークだ!!」と公式サイトにでかでかと書かれているが、マイクロサービスがそもそもよくわかってないのでそこはスルー。触ってみた感じだとCQRS+ESな仕組みを宣言的に実装出来るしくみじゃないかな〜って印象。
とりあえず動かしてみる
まずはここに書いてある通りにやってみる。
https://www.lagomframework.com/get-started-scala.html
ブラウザでhttp://localhost:9000/api/hello/Worldにアクセスしたら「Hello, World!」って表示されるはず。
他のサンプルは?
サンプルコードを読めば書いてある通り、Postメソッドで「Hello」の部分を変更できる。例えば、以下のコマンドを実行して
curl -H "Content-Type: application/json" -X POST -d '{"message":"Goodbye and Goodnight"}' http://localhost:9000/api/hello/Kenny
http://localhost:9000/api/hello/Kennyにアクセスしたら、メッセージが「Goodbye and Goodnight, Kenny!」に変わっている(どうでもいいけど、著者はにわかプロレスファン)
ちなみに変わっているのはKennyのときだけ(http://localhost:9000/api/hello/Worldにアクセスしたら、「Hello, World!」って表示される)多分、裏で動いているCassandraサーバーに記録してるんだと思う。
あとは、wscatっていうWebSocketのクライアントをインストールして、以下のコマンドを実行して文字列を入力するとレスポンスを返してくれる。
wscat -c ws://localhost:9000/stream
connected (press CTRL+C to quit)
> Doilux
< Hello, Doilux!
> Kenny
< Goodbye and Goodnight, Kenny!
どこに実装されているの?
前述のWebSocketじゃないやつはhello-lagom-apiサブプロジェクトのHellolagomService.scala
にインターフェースが定義されていて、hello-lagom-implのHellolagomServiceImpl.scala
に実装が書かれている。
WebSocketのやつはhello-lagom-stream-apiサブプロジェクトのHellolagomStreamService.scala
にインターフェースが、hello-lagom-stream-implサブプロジェクトのHellolagomStreamServiceImpl.scala
に実装が書いてある。
.*Loader.scala
にアプリケーションの設定が、ある程度決まった記述で書かれているんだと思う。
次は??
ドキュメントが充実しているので、とりあえずドキュメントを読みながら色々試すのがいいと思います(私もそんな感じで色々試しています)
他にはこの記事が役に立ちました。
たけぞう瀕死ブログ