2016-05-30 3 views
1

の例を見てみるとScalaJsためlihaoyiのAutowireライブラリのドキュメンテーションを通読、私はそれだけでオーバーライドdoCallことができますように、1つautowire.Clientが両方GETとPOST実行できるような方法を見ることはできません。Autowireライブラリ(Scalajs)はdoCallで複数のHTTPメソッドタイプをどのように実行できますか?

def doCall(req: Request): Future[PickleType] 

そして、要求は単にある:私のAPIを作成および更新するために取得するためのGET、POST、およびUPDATEをたどることができるように

case class Request[PickleType](path : Seq[String], args: Map[String, PickleType]) 

は、この制限に(複数autowire.Clientインスタンスを持つ以外の)素敵な解決策はあります( REST大会)?

答えて

1

あなたの正確な要件によりますが、の中にdoCallというように状況によっては異なる電話をかけることがあります。例えば、in QuerkidoCall実装は次のようになります。

override def doCall(req: Request): Future[String] = { 
    try { 
    if (DataAccess.space.isEmpty) { 
     makeCall(req, controllers.ClientController.rawApiRequest()) 
    } else { 
     makeCall(req, controllers.ClientController.apiRequest(
     DataAccess.userName, 
     DataAccess.spaceId.underlying)) 
    } 
    } catch { 
    ... 
    } 
} 

これは、外部の実行時の情報に基づいて呼び出すためのAPIを選択されていますが、Requestをイントロスペクトし、その方法を呼び出すためにどのようなAPI決めることができました。私はそれがあなたが探しているものだと思っています。

どのリクエストがどのメソッドに対応しているかを示すいくつかの外部情報が必要ですが、私はそれほど多くは見えません。 - Autowireは本質的にHTTPに関するものではありません。単一のHTTPエントリーポイント)、あなたはここで普通ではなく何かをやっています。 Playを使用している場合は、JavascriptReverseRouterからメソッド情報を取得できます。そうでない場合は、HTTP実装で使用できるイントロスペクションが提供されているかどうかを確認する必要があります。

関連する問題