如何尽可能地摧毁这些指令?
我能够将三个指令折叠到mainHeader中,但是如何包含authenticate和responseWithMediaType呢?
val mainHeaders = cors & headerValueByName("Access_Token") & headerValueByName("Tenant_Name")
override def getLayer = path("api" / Segment / "model" / "layers") { modeledSystemName =>
mainHeaders { (accessToken, tenantName) =>
authenticate(validate(accessToken)) { authInfo =>
respondWithMediaType(`application/json`) {
get {
onComplete(service.getlayers(modeledSystemName, tenantName)) {
case Success(layers) => complete(layers)
//case Success(None) => complete(NotFound, "Release version not found")
case Failure(ex) => complete(InternalServerError, s"An error occurred: ${ex.getMessage}")
}
}
}
}
}
}
答案 0 :(得分:2)
喷雾路线非常易于组合,因此您可以随心所欲。例如,我会写这样的路线:
authWithHeader
让我解释一下这段代码。首先,我创建了指令flatMap
,该指令读取标头值,然后使用此值进行身份验证。它非常简单,所有魔法都由authenticatedJsonRoute
完成。
然后,我创建了&
,它只是其他简单指令的组合。使用authenticatedJsonRoute
运算符完成组合魔术(我将其称为"然后在此上下文中使用"并且这些指令将按顺序执行。
最后,我在完整的路线getLayer
中使用了我的编写指令$result=mysqli_query($con,"SELECT req_date,Name,Mobile,Email FROM pend WHERE Mobile LIKE '" . mysql_escape_string($_POST['Mobile']) . "'; ");
。