2014-05-21 2 views
2

Spray.IO로 작업하면서 JSON 입력을받는 서비스를 빌드하고 있습니다. 일부 필드를 확인하여 JSON 페이로드의 유효성을 검사하려고합니다.Spray.io 유효성 검사 json 지시문

나는, JSON 스키마 또는 구문 분석 오류 검증에 관심이 아니에요 대신 필드의 실제 유형과 같은 필드 값을 확인합니다 (예 : 플로트 대 정수)

나는 스칼라 사용에 관심이 아니에요이 필요합니다. 예외가 발생하고 클라이언트에게 알릴 수 없습니다. ALL 단일 요청에서 유효성 검사 오류가 발견되었습니다.

기본 제공 지침/거부가 있습니까?

Play (http://www.playframework.com/documentation/2.2.1/ScalaJsonRequests)에서 비슷한 것을 보았습니다. 기본 제공되는 것이 없으면 어떻게 직접 제작할 수 있습니까?

답변

0

json이 마샬링하고있는 사례 클래스에서 스칼라의 require를 사용할 수 있습니다. 예 :

case class AccountSearchQuery (lookupType:Int, lookupValue:String) { 
    require(lookupType != 6 || (lookupType == 6 && lookupValue.toLong > 99999), "lookupValue must be a greater than 99999 for lookupType 6 (account number)") 
    require(!lookupValue.isEmpty(), "lookupValue cannot be empty") 
} 

당신이 클래스를 만들려고하고 요구 사항 중 하나는 당신이 예외를 얻을 것이다 실패

. 이것은 스프레이 경로의 일부인 경우 응답은 모든 주장을 확인하기 위해 업데이트 된 질문에 대한 응답으로 requirement Failed: [failure message from the require statement that failed]

+0

가 감사를 @Gangstead 당신의 대답을 위해. 나는 당신이 유효한 접근법 일 수 있기 때문에 지금 내 질문을 편집했지만 요청시 다른 모든 검증 오류가 누락 될 수 있습니다. – Roman

0

당신이 창조적 얻을 수 귀하의 문 필요가있는 몸 (400)가 될 것이다 :

case class User(name: String) { 
    require(testAll, allTestMessages) 
    def test1 = name.length > 5 
    def test1M = if(test1) "too short." else "" 

    def test2 = name.length > 10 
    def test2M = if(test2) "also too short." else "" 

    def testAll = test1 && test2 
    def allTestMessages = test1M + test2M 
} 
관련 문제