2017-08-03 7 views
0

callpathCallおよびnamedCallがどのように呼び出されているかを調べるためにLagomを試しています。私はlagomのチュートリアルに従っています。私は、新しいサービスを作成し、次のURLを使用して、URLを開いたが、私はエラーを取得lagomで 'call'メソッドを使用することができません

使用

URL(私はhello2応答を見ることを期待)

http://localhost:9000/ 

私は以下のステップを行っている

GET\Q/stream\EService: hello-stream (http://0.0.0.0:58322) 
2GET\Q/api/hello/\E([^/]+)Service: hello (http://0.0.0.0:57797) 
3POST\Q/api/hello/\E([^/]+)Service: hello (http://0.0.0.0:57797) 
**4POST\Q/hello2\EService: hello (http://0.0.0.0:57797)** 

エラー

テンプレート(https://www.lagomframework.com/documentation/1.3.x/scala/IntroGetStarted.htmlを参照)をダウンロードした後、新しいサービスコール(hello2という)を追加するようにコードを変更しました。以下は私は(HelloService.scalaで)としてhello2を定義しているHelloService.scala

named("hello") 
     .withCalls(
     pathCall("/api/hello/:id", hello _), 
     pathCall("/api/hello/:id", useGreeting _), 
     call(hello2) //added this line in default template. 
    ) 

に追加したTEHコードである

def hello2: ServiceCall[String, String] 

HelloServiceImpl.scalaのコードは

override def hello2 = ServiceCall { 
    Future.successful("Hello2") 
    } 

ありますQuestin 1 - 間違いは何ですか(私はブラウザからサービスを正しく呼び出さないと思います)?

+0

投稿ごとに1つの質問のみが必要です(https://meta.stackexchange.com/questions/222735/can-i-ask-only-one-question-per- postを参照)。 1。もう1つを別の質問にしてください。ありがとう。 –

答えて

2

"私はブラウザからサービスを正しく呼び出すわけではないと思う"と言えば、ブラウザのURLに移動しているだけであるということですか?その場合、hello2はPOSTエンドポイントとして定義されており、ブラウザはGETリクエストを送信するため、これは機能しません。

hello2は、ServiceCall定義で要求メッセージを受け取るため、POSTエンドポイントとして定義されています。 (https://www.lagomframework.com/documentation/1.3.x/java/ServiceDescriptors.htmlを参照してください)

StringからNotUsedに要求メッセージタイプを変更する場合、Lagomは代わりにGETエンドポイントの生成を開始する必要があります。

+0

この変更を 'def hello2:ServiceCall [NotUsed、String]'とし、 'http:// localhost:9000/hello2'を実行しました。 –

関連する問題