Scala - 在路由文件中传递可选参数的定义值

Scala - passing defined values for optional parameters within routes file

所以我有一个路由文件,它调用带有多个可选输入的控制器。如下

GET      /1.0/*path/documents             
controllers.DocumentController.list(path, format: Option[String], ref: Option[String], build: Option[String], files: Option[String], token: Option[String])

我希望自定义一个 URI,该 URI 将为这些选项传递已定义或提供的值,特别是我希望将 :ref & :build 从 URI 传递到下面各自的选项中,而无需更改底层控制器或模型调用。

GET      /1.0/*path/documents/:ref.:build         
controllers.DocumentController.list(path, format: Option[String], Some(ref), Some(build), files: Option[String], token: Option[String])

目前上面给出了这个错误。

')' expected but '(' found.

我已经使用 scala 约 3 周了,几乎没有接受过 OO 或 MVC 开发方面的正式培训,所以请放轻松 :)

解决方案:必须定义方法以将这些参数作为函数方法的一部分而不是选项。请参阅下面的答案。

我测试的时候没有和你一样的编译错误,但是
1、我觉得:ref后面的点是不授权的,应该是斜杠。
2. 如果你想使用一个选项,像这样指定它:

GET      /path      controllers.DocumentController.list(format: Option[String])

并这样称呼它:

/path?format=myString

可选参数只能在URL之后的查询选项中提供。以下面的路线为例:

GET      /1.0/*path/documents        
controllers.DocumentController.list(path, format: Option[String], Option[ref], Option[build], files: Option[String], token: Option[String])

这些参数可以通过在 ? 之后附加到 URI 的查询来提供。

例如:

http://localhost:9000/1.0/pathvariable/documents?format=json&ref=master

如果想要定制的路线是:

GET      /1.0/*path/documents/:ref.:build

那么 refbuild 变量不应定义为选项,而应定义为必须提供的常规输入参数。

下面的示例中,列表 2 是采用 3 个参数以及一些可选参数的新方法:

GET      /1.0/*path/documents/:ref.:build
controllers.DocumentController.list2(path, ref: String, build: String, format: Option[String], files: Option[String], token: Option[String])