我一直在开发接受Option[JsValue]
的控制器操作,因为Play的request
对象可以解析为JSON:
def submit = Action { implicit request =>
performDbQuery(request.body.asJson)
...
}
def performDbQuery(json: Option[JsValue]) = {
...
}
路由
PUT /submit controllers.MainController.submit
JSON是否是在Play中发出REST调用的首选方式?
答案 0 :(得分:2)
我不确定Stack Overflow是否适合询问“首选方式”,但它肯定会让您很容易使用JSON,如您所见。
您实际上可以使用Body Parser来更加严密地收紧代码,{{3}}会自动拒绝/submit
端点Content-Type
application/json
def submit = Action(parse.json) { implicit request =>
performDbQuery(request.body)
...
}
def performDbQuery(json: JsValue) = {
...
}
的请求,为您返回400代码,并允许在您的方法中更强大的输入:
Option
注意{{1}}是如何消失的,因为我们现在可以确定这是一个很好的JSON。