这是我在 scala 上的第一次体验。我尝试使用 Play2 制作一个小型 REST 控制器。
我的主要目标是有一个带有一些 json 数据的 POST 路由到正文。
这是我已经做过的:
def instMeasurement(variable: String) = Action { request =>
request.body.asJson.map { json =>
val measurement = MongoDBObject(
"variable" -> variable,
"quantity" -> (json \ "quantity").asOpt[Float].getOrElse(BadRequest("Missing parameter [quantity]")),
"when" -> (json \ "occurTime").asOpt[String].getOrElse(BadRequest("Missing parameter [occurTime]")))
dao("powermeter").save(measurement)
Ok(json)
}.getOrElse(
BadRequest(Json.toJson("JSON Body missing"))
)
}
一切正常,除了错误过程。我想路由到一个 BadRequest。
Play 2 文档显示了一个小例子:
def sayHello = Action { request =>
request.body.asJson.map { json =>
(json \ "name").asOpt[String].map { name =>
Ok("Hello " + name)
}.getOrElse {
BadRequest("Missing parameter [name]")
}
}.getOrElse {
BadRequest("Expecting Json data")
}
}
听起来很完美,只是它没有显示如何处理 json 中的多个值。
如何使用 json 中的 2 个值(例如,姓名和名字)做同样的事情?如果 json 不完整,如何解析 json 并路由到 BadRequest?