2017-07-19 10 views
0

akkaルーティングでは、次のようにcompleteを使用します。 (HttpResponse)Akka Completeパラメータタイプ

この完全機能は、akka.scalads.HttpResponseまたはorg.apache.http.HttpResponseからのHttpResponseだけを受け入れますか?それが受け入れられないなら、なぜ誰かが説明することができますか?

答えて

1

完全なパラメータ型あなたはcompleteは、アッカのHttpResponseを含む多くの異なるパラメータ型を、受け入れることがわかりますthe documentationから

def complete[T :ToResponseMarshaller](value: T): StandardRoute 
def complete(response: HttpResponse): StandardRoute 
def complete(status: StatusCode): StandardRoute 
def complete[T :Marshaller](status: StatusCode, value: T): StandardRoute 
def complete[T :Marshaller](status: Int, value: T): StandardRoute 
def complete[T :Marshaller](status: StatusCode, headers: Seq[HttpHeader], value: T): StandardRoute 
def complete[T :Marshaller](status: Int, headers: Seq[HttpHeader], value: T): StandardRoute 

のApache /アッカレスポンス

完全にはありませんただし、apacheの応答タイプを受け入れます。

HttpResponseメンバ変数のほとんどは、一つの大きな例外を除いて、対応するApacheの変数にマッチするのは簡単です:ResponseEntityはアッカ・ストリームSource[ByteString, Any]です。アペックHttpEntityは、InputStreamを使用して、akka /ストリームを認識しないデータを表します。したがって、既存のakka ActorSystemがなければ直接変換はできません。

import akka.http.scaladsl.model.{HttpResponse => AkkaResponse} 
import org.apache.http.{HttpResponse => ApacheResponse} 

implicit def apacheToAkka(apacheResponse : ApacheResponse) : AkkaResponse = ??? 

val apacheResponse : ApacheResponse = ??? 

complete(apacheResponse) 

あなたが完了するために、Apacheの応答を渡すことができるようになるアッカHTTPレスポンスにApache HTTPレスポンスから独自implicit conversion functionを書き込むことが可能です