これは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 にルーティングするにはどうすればよいですか?