我正在使用Java Spark构建的REST服务器,我想知道使用:path-parameter
vs {path-parameter}
定义路径参数的以下两种语法之间的区别:
path("/containers/:container-id", () -> { ...} )
path("/shipments/{shipment-id}", () -> { ... } )
有一次,当查询路径/{handler-id}
(嵌套在/v1
和/handlers
内)的路径参数时,我不得不改变{{1}的语法在查询:
的参数时,将表单添加到{}
表单以使Spark不返回null
。
那么这两种语法之间的区别是什么?
答案 0 :(得分:2)
在路径中定义参数的唯一语法是:path-param
。
查询此参数的值由String paramVal = request.params(":path-param")
完成(查询时冒号是可选的。)
或者,如果你想获得一个包含所有参数名称 - 值的地图,你会去request.params();
我不确定为什么在查询你的参数时你得到null,但我猜你使用了request.queryParams(":path-param");
。但是,此API不用于查询您想要的路径参数,而是用于查询查询参数,它们是路径形式的参数,如/api/users?userId=1234
。
摘要
Path Definition URL in browser Query
--------------- ---------------------------- -----------------------------------
/api/users/:id <host>/api/users/1234 request.params("id") ==> 1234
/api/users <host>/api/users?id=1234 request.queryParams("id") ==> 1234
String
,如果需要,您必须进行投射。