3

spray-clientREST サービスにアクセスするために使用しています。サーバーから返されたデータの一部は、http 応答ヘッダーにあります (残りは応答本文にあります)。

応答をアンマーシャリングできるようにするために、Unmarshaller. ただし、アンマーシャラーは (のインスタンスとして) 応答本文にしかアクセスできず、HttpEntityこの段階ではすべてのヘッダーにアクセスできないようです。

現在のパイプラインとアンマーシャラー コードは次のとおりです。

  implicit val IDsUnmarshaller = 
    Unmarshaller[List[ID]](MediaTypes.`text/plain`) {
      case HttpEntity.NonEmpty(contentType, data) => 
        data.asString.split("\n").toList.map( ID(_) )
    }

  val pipeline: HttpRequest => Future[List[ID]] = (
    encode(Gzip)
    ~> sendReceive
    ~> decode(Deflate)
    ~> unmarshal[List[ID]]
  )

アンマーシャリング時にそれらにアクセスする方法はありますか? 回避策はありますか?

4

1 に答える 1

1

プレーン Unmarshaller の代わりに FromResponseUnmarshaller を提供すると、ヘッダーにもアクセスできます。

FromResponseUnmarshallers を作成する方法については、このファイルを参照してください: https://github.com/spray/spray/blob/master/spray-httpx/src/main/scala/spray/httpx/unmarshalling/Deserializer.scala

たとえば、暗黙的な関数を提供でき、HttpResponse => List[ID]それを取得する必要があります。

于 2015-06-06T05:58:56.630 に答える