我有一个现有的Akka HTTP HttpRequest
,我想向其中添加两个标头。
val req: HttpRequest = ???
val hs: Seq[HttpHeader] = Seq(RawHeader("a", "b"))
req.addHeaders(hs)
预期:
HttpRequest
对象实际:
.addHeaders
期望java.lang.Iterable
并且不会编译。在Scala中推荐这样做的方法是什么?
有一种解决方法,但是有点笨拙:
req.withHeaders(req.headers ++ hs)
运行Scala 2.12.8和Akka HTTP 10.1.7。
答案 0 :(得分:2)
一种替代方法是使用foldLeft
和addHeader
:
val req: HttpRequest = ???
val hs: Seq[HttpHeader] = Seq(RawHeader("a", "b"))
hs.foldLeft(req)((r, h) => r.addHeader(h))
答案 1 :(得分:1)
另一种解决方法可能是减少银屑。 addHeaders
是defined in the source的大致方式。不幸的是,我不知道为什么addHeaders
没有在scala api中公开。
req.mapHeaders(_ ++ hs)
答案 2 :(得分:0)
您可以将现有的HttpRequest复制到带有标头的新HttpRequest
val req: HttpRequest = ???
val hs: Seq[HttpHeader] = Seq(RawHeader("a", "b"))
val reqWithHeaders: HttpRequest = req.copy(headers=hs)