所以我有一个路由文件,它调用一个带有几个可选输入的控制器。如下所示
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& :从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])
目前上面给出了这个错误。
')'期待但是'('发现。
我已经使用scala约3周了,并且在OO或MVC开发方面几乎没有接受过正式培训,所以请放轻松我:)
解决方案:必须定义方法以将这些参数作为函数方法的一部分而不是选项。见下面的答案。
答案 0 :(得分:1)
我没有与测试时相同的编译错误,但是
1.我认为:ref
之后的点未经授权,应该是斜线
2.如果要使用选项,请按以下方式指定:
GET /path controllers.DocumentController.list(format: Option[String])
并称之为:
/path?format=myString
答案 1 :(得分:1)
可选参数只能在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])