我正在将 Ember.js 和 Play 用于单页 Web 应用程序,并以 Play 作为 API。 Ember 合并这样的请求:?ids[]=401460&ids[]=379610
。但是,当我尝试在 Play 的路由文件中处理该值时,它实际上期望该值为 ids[]
而不是 ids
。但我无法告诉路由文件查找 ids[]
,因为它会在 [
上引发错误。我尝试过使用反引号,就像在 scala 代码本身 `ids[]`
中一样,但这再次在路由文件中引发错误。
是否可以在路由文件中执行此操作?
GET /api/test controllers.application.getTests(ids[]:List[Long])
我知道我可以通过这种方式管理它,
Map<String,String[]> params = request().body().asFormUrlEncoded();
但我更愿意让 Play 完成它的工作并在路由文件中处理它,然后将值传递出去。
这是否可能,或者是使用 asFormUrlEncoded
处理它的唯一选项?
更新:(进行最小的更改)
别介意这个解决办法。在重新尝试之前忘记保存文件给了我一些虚假的希望。
最佳答案
这在 Play 2.4.x 中似乎是不可能的。有a test in RoutesFileParserSpec.scala
这表明这是可能的:
"parse argument with complex name" in {
parseRoute("GET /s p.c.m(`b[]`: List[String] ?= [])").call.parameters must_== Some(Seq(
Parameter("`b[]`", "List[String]", None, Some("[]"))))
}
但看来您必须等待 2.5.x。另请参阅此问题:https://github.com/playframework/playframework/issues/4693
关于Play Framework Routes 中的 Scala 反引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34303322/