1
我想驗證我的API的完整功能的結果,當它無法將字符串轉換爲Json類型時,Response會生成一個null,我不希望它生成null但說:「沒有發現」,這是我的路線:如何在AKKA-HTTP中驗證完成
val route = pathPrefix("auth") {
path("signIn") {
pathEndOrSingleSlash {
post {
entity(as[LoginPassword]) { loginPassword =>
val a = signIn(loginPassword.login, loginPassword.password).map(_.asJson)
if(signIn(loginPassword.login, loginPassword.password).map(_.asJson) == null){
complete(states.map(_.asJson))
}else {
def getObject : Option[Any] = Option(signIn(loginPassword.login, loginPassword.password).map(_.asJson))
val ahh = signIn(loginPassword.login, loginPassword.password).map(_.asJson)
if(getObject.isEmpty || getObject == null){ ///////NOT FOUND
complete("Not Found")
}else {
complete(signIn(loginPassword.login, loginPassword.password).map(_.asJson)
}
//complete(signIn(loginPassword.login, loginPassword.password).map(_.asJson))
}
}
}
}
}
這是不行的,因爲它總是進入其他的條件中,響應一個JSON時,得到的BD和當值null不會。
功能登錄
def signIn(login: String, password: String): Future[Option[TokenEntity]] = {
db.run(users.filter(u => u.username === login).result).flatMap { users =>
users.find(user => Bcrypt.validate(password, user.password)) match {
case Some(user) => db.run(tokens.filter(_.userId === user.id).result.headOption).flatMap {
case Some(token) => Future.successful(Some(token))
case None => createToken(user).map(token => Some(token))
}
case None => Future.successful(None)
}
}
}
我使用JSON庫是:Json
一些幫助?謝謝。
這是一個非常困難的問題,不知道signIn'的'簽名來回答以及您正在使用的JSON庫。這個'國家'的價值也來自無處不在。另外,你爲什麼多次調用'signIn'? – acjay