0

我一直在开发可以接受的控制器操作,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 调用的首选方式吗?

4

1 回答 1

2

我不确定 Stack Overflow 是否适合询问“首选方式”,但正如您所见,它确实让使用 JSON 变得非常容易。

实际上,您可以通过使用Body Parser来进一步收紧您的代码,它会自动拒绝对您的/submit端点的不具有Content-Typeof 的请求,为您application/json返回 400 代码,并允许在您的方法中进行更强的输入:

def submit = Action(parse.json) { implicit request => 
  performDbQuery(request.body)
  ...
}

def performDbQuery(json: JsValue) = {
  ...
}

注意它是如何Option消失的,因为我们现在可以确定它是好的 JSON。

于 2013-09-05T23:33:34.593 回答