我有(以前)REST spray.io webservice。现在,我需要在我的一个方法中生成SESSIONID以与其他一些方法一起使用。我希望它在响应标题中。
基本上,我想象逻辑如下:
path("/...") {
get {
complete {
// some logic here
// .....
someResult match {
case Some(something) =>
val sessionID = generateSessionID
session(sessionID) = attachSomeData(something)
// here I need help how to do my imaginary respond with header
[ respond-with-header ? ]("X-My-SessionId", sessionID) {
someDataMarshalledToJSON(something)
}
case None => throw .... // wrapped using error handler
}
}
}
}
但是,它并不完整,我指的是respondWithHeader
指令。我需要一个建议。
答案 0 :(得分:5)
Spray中有一个respondWithHeader
指令。以下是官方doc以及如何使用它的示例:
def respondWithSessionId(sessionID: String) =
respondWithHeader(RawHeader("X-My-SessionId", sessionID))
path("/...") {
get {
// some logic here
// .....
sessionIDProvider { sessionID =>
respondWithMediaType(`application/json`) { // optionally add this if you want
respondWithSessionId(sessionID) {
complete(someDataMarshalledToJSON(something))
}
}
}
}
}