我编写了简单的rest API,将音乐曲目数据添加到mongodb。
我能够成功写入曲目,但是我想处理错误案例。
我的代码如下 -
def saveTrack = Action.async(parse.json) {
import model.Track.trackFormat
implicit request =>
request.body.validate[Track].map { data =>
trackService.save(data).onComplete {
case Success(value) => Ok(Json.obj("message" -> Messages("track.save.ack")))
case Failure(e) => Ok(Json.obj("message" -> Messages("track.save.nack")))
}
}
Future.successful(Ok(Json.obj("message" -> Messages("track.save.fin"))))
}
假设在trackService.save(data)中发生了一些故障,那么我想返回错误代码。我想知道如何实现这一点。
由于 彩
答案 0 :(得分:1)
def saveTrack = Action.async(parse.json) { implicit request =>
request
.body
.validate[Track]
.map { data =>
trackService.save(data).map { v =>
Ok(Json.toJson(Json.obj("message" -> Messages("ack"))))
}.recover {
case _ =>
Ok(Json.toJson(Json.obj("message" -> Messages("nack"))))
}
}.getOrElse {Future.successful(BadRequest(Json.obj("error" -> "bad json")))
}
}
如果json正文与您的模型不匹配,请使用recover
来处理错误和getOrElse
。