2

我(以前)有 REST spray.io 网络服务。现在,我需要在我的一种方法中生成 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指令。我需要一个建议。

4

1 回答 1

5

Spray中有一个respondWithHeader指令。这是官方文档和如何使用它的示例:

 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))
             }
           }
       }
   }
 }
于 2014-07-28T08:39:58.273 回答