Je veux valider le résultat de la fonction complète de mon API, la Réponse génère un NULL quand elle ne peut pas transformer la Chaîne en un type Json, je ne veux pas qu'elle génère de null mais dire: « not found », voici mon itinéraire:Comment valider Complète dans 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))
}
}
}
}
}
cela ne fonctionne pas, car il entre toujours l'autre dans la condition, la réponse JSON quand il obtient la valeur de BD et nulle lorsqu'ils ne sont pas.
Fonction Signe
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)
}
}
}
La bibliothèque JSON J'utilise est: Json
aide? Merci.
Ceci est une question très difficile de répondre sans connaître la signature de 'signin'dans et quelle bibliothèque JSON vous utilisez. La valeur 'states' vient aussi de nulle part. Aussi, pourquoi appelez-vous 'signIn' plusieurs fois? – acjay