Java Spark中`:path-param`和`{path-param}`之间的区别是什么?

时间:2017-06-01 07:46:34

标签: java url-routing spark-java

我正在使用Java Spark构建的REST服务器,我想知道使用:path-parameter vs {path-parameter}定义路径参数的以下两种语法之间的区别:

path("/containers/:container-id", () -> { ...} )

path("/shipments/{shipment-id}", () -> { ... } )

有一次,当查询路径/{handler-id}(嵌套在/v1/handlers内)的路径参数时,我不得不改变{{1}的语法在查询:的参数时,将表单添加到{}表单以使Spark不返回null

那么这两种语法之间的区别是什么?

1 个答案:

答案 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,如果需要,您必须进行投射。