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
那么 ref
和 build
变量不应定义为选项,而应定义为必须提供的常规输入参数。
下面的示例中,列表 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])
所以我有一个路由文件,它调用带有多个可选输入的控制器。如下
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
那么 ref
和 build
变量不应定义为选项,而应定义为必须提供的常规输入参数。
下面的示例中,列表 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])