使用最新的akka-http我想实现一个端点,该端点将重定向所有传入的上传文件请求而不消耗请求实体。
目前的实施正在使用:
put {
extractRequest { r: HttpRequest =>
onComplete(r.discardEntityBytes().future) { done =>
redirect(Uri("http://example.com"), TemporaryRedirect)
}
}
}
问题是它等待直到收到(丢弃)整个http请求主体,并且只有在发送重定向响应之后才会等待。从客户端的角度来看,这意味着两次上传我尝试将withSizeLimit(0)
添加到请求实体,但它引入了早期响应问题。
相关文档:
答案 0 :(得分:0)
今天我做了类似的事情。您确定需要在重定向之前完成丢弃吗?
这个怎么样:
put {
extractRequest { r: HttpRequest =>
r.discardEntityBytes() // runs wild
redirect(Uri("http://example.com"), TemporaryRedirect)
}
}
.discardEntityBytes
用于尝试“取消”接收方不需要的不必要的网络流量。在这里,我们尽快设置它。它在后台运行(我希望),并且返回重定向也会尽快发生。
我有兴趣听到,这是否改变了什么......