2017-02-11 7 views
1

처리하기 전에 LIFT에서 REST 요청 (GET 및 PUT)의 유효성을 검사하고 싶습니다. 즉, 요청에 매개 변수 요청자가 있는지 여부를 확인해야합니다. 누락 된 매개 변수를 예외로 응답하지 않아도됩니다. 이 작업을 수행하는 방법을 알려주십시오.요격 휴식 리프트 나머지 요청 및 확인 매개 변수

답변

0

할 수있는 일이 몇 가지 있습니다. 내가 시도 할 두 사람은 당신의 휴식 전화를 포장 할 도우미 함수, 같은 것 :

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 
} 

또는, 당신은 아마 당신이 모든 메소드 호출을 확인하고 싶었다 가정 전체 RestHelperguard을 사용할 수 있습니다,이 같은 작동 될 수 있습니다

val ensureParams: PartialFunction[Req, Unit] = { 
    case r if (r.get_? || r.put_?) && checkParam(r) => 
    case r if (!r.get_? && !r.put_?) => 
    } 
그러나 희망 - 내가 위의 코드를 테스트하지 않았습니다, 그래서 약간의 실수가있을 수 있습니다

LiftRules.dispatch.append(ensureParams guard YourRestHelper) 

:

한 다음에 부팅에 RestHelper 인스턴스를 보호 그것은 당신을 시작하게 도와야합니다.

+0

감사합니다. jcern, 저는 RestHelper를 사용하여 매개 변수가없는 경우 요청을 차단합니다. 매개 변수를 사용할 수없는 경우 사용자 지정 메시지 또는 오류 페이지가 필요합니다. 우리는 어떻게이 일을 할 수 있습니까? – Prasad

+0

[리프트 목록] (https://groups.google.com/forum/#!forum/liftweb)에서 추가 세부 정보를 묻는 질문을 할 수 있습니다. 또는 추가적인 후속 질문을 할 수 있으며 자세한 내용을 제공 할 수도 있습니다. –