2016-11-15 18 views
0

最新のakka-httpを使用リクエストエンティティを消費せずに、すべての着信アップロードファイルリクエストをリダイレクトするエンドポイントを実装します。リクエストボディを無視してリクエストをリダイレクトする方法akka-httpを使用して

現在の実装では、使用している:

put { 
    extractRequest { r: HttpRequest => 
    onComplete(r.discardEntityBytes().future) { done => 
     redirect(Uri("http://example.com"), TemporaryRedirect) 
    } 
    } 
} 

問題は、それが全体のHTTPリクエストボディを受信するまで待機する(廃棄)とだけその後応答をリダイレクト送信することです。クライアントの観点からは、ファイルを2回アップロードすることを意味します。リクエストエンティティにwithSizeLimit(0)を追加しようとしましたが、早期応答の問題があります。

関連資料:

+0

...これは何も変更されたかどうか、聞いて興味があると思いますが、エンティティが転送されないか、エンティティのサイズについてだけ心配していることを保証しようとしていますか? –

+0

とにかく無視されると、クライアントから大きなエンティティを2回送信しないようにしたいと思います。 – Nikolay

答えて

0

私は今日、似た何かをしました。リダイレクトする前に破棄を完了する必要がありますか?

は、どのようにこのことについて:

put { 
    extractRequest { r: HttpRequest => 
    r.discardEntityBytes() // runs wild 

    redirect(Uri("http://example.com"), TemporaryRedirect) 
    } 
} 

.discardEntityBytes受信機は必要ありません不要なネットワークトラフィックを「キャンセル」しようとするために使用されます。ここでは、できるだけ早く設定します。それはバックグラウンドで実行されます(私は願っています)、リダイレクトを返すことはできるだけ早く起こります。

私は

関連する問題