如何使用akka-http忽略请求正文和重定向请求

时间:2016-11-15 11:43:29

标签: akka-http

使用最新的akka​​-http我想实现一个端点,该端点将重定向所有传入的上传文件请求而不消耗请求实体。

目前的实施正在使用:

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

问题是它等待直到收到(丢弃)整个http请求主体,并且只有在发送重定向响应之后才会等待。从客户端的角度来看,这意味着两次上传我尝试将withSizeLimit(0)添加到请求实体,但它引入了早期响应问题。

相关文档:

1 个答案:

答案 0 :(得分:0)

今天我做了类似的事情。您确定需要在重定向之前完成丢弃吗?

这个怎么样:

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

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

.discardEntityBytes用于尝试“取消”接收方不需要的不必要的网络流量。在这里,我们尽快设置它。它在后台运行(我希望),并且返回重定向也会尽快发生。

我有兴趣听到,这是否改变了什么......