我希望在处理之前验证LIFT中的REST请求(GET和PUT)。即我需要检查请求是否有参数请求者。如果不需要响应异常说缺少参数。你能告诉我怎么做吗?
答案 0 :(得分:0)
你可以做一些事情。我试过的两个将是一个帮助函数,它将包含你的Rest调用,如:
def checkParam(r:Req):Boolean = {
r.param("paramName").isDefined
}
def requireParams[T<:LiftResponse](r:Req)(methodBody: => T):LiftResponse = {
if(checkParam(r))
methodBody
else
InMemoryResponse("Parameters not specified".getBytes(), List("content-type" -> "text/plain"), Nil, 500)
}
该功能将检查参数,如果不起作用则返回错误,如果有,则执行调用。在您的休息电话中,您可以使用它:
case "location" :: Nil Get req => requireParams(req){
//your rest body
}
或者,您可以在整个RestHelper
上使用guard,假设您要检查每个方法调用,这样的事情可能会有效:
val ensureParams: PartialFunction[Req, Unit] = {
case r if (r.get_? || r.put_?) && checkParam(r) =>
case r if (!r.get_? && !r.put_?) =>
}
然后用Boot:
保护BootH中的RestHelper实例 LiftRules.dispatch.append(ensureParams guard YourRestHelper)
我还没有测试过上面的代码,所以可能会出现一些错误 - 但希望它可以帮助你开始。