Scalatra中multiParams传参:多ID的URL格式如何设置?
Scalatra中multiParams多参数的正确URL格式
我来帮你搞定这个问题~你之前试的&、逗号格式不对,主要是没摸准multiParams对应的参数传递逻辑,其实有两种常用的正确姿势:
1. 重复查询参数名(最常用的标准方式)
如果你的路由不需要把参数嵌在路径里,直接用HTTP标准的重复查询参数格式就行。比如:
- URL格式:
http://your-server/mypath?ids=id1&ids=id2&ids=id3 - 对应的路由代码:
get("/mypath") { val ids: Seq[String] = multiParams("ids") // 这里ids就是包含id1、id2、id3的序列啦 }
Scalatra的multiParams会自动把同一个参数名的多个值收集成序列,这是最符合HTTP规范的方式。
2. 路径通配符(适合参数在路径中的场景)
要是想把多个ID放在URL路径里,就用Scalatra的"splat"通配符。比如:
- 路由定义:
get("/mypath/ids/*") { // splat会捕获*后面的所有路径段,比如URL是/mypath/ids/id1/id2,multiParams("splat")会拿到Seq("id1/id2") val ids = multiParams("splat").head.split("/").toSeq // 拆分后就得到了Seq("id1", "id2") }
- 对应的URL:
http://your-server/mypath/ids/id1/id2/id3
你之前试的../mypath/id1&id2格式错误,一是缺少了查询串的起始标记?,二是没有重复参数名,所以Scalatra根本识别不出这是多参数。记住核心:要么重复同一个查询参数名,要么用路径通配符捕获多段路径~
内容的提问来源于stack exchange,提问作者user79074
相关产品推荐
相关产品推荐

