Java Spark 中的 `:path-param` 和 `{path-param}` 有什么区别?
What's the difference between `:path-param` and `{path-param}` in Java Spark?
我正在使用 Java Spark 构建 REST 服务器,我想知道以下两种用于定义路径参数的语法之间的区别,使用 :path-parameter
与 {path-parameter}
:
path("/containers/:container-id", () -> { ...} )
path("/shipments/{shipment-id}", () -> { ... } )
有一次,在查询路径 /{handler-id}
(嵌套在 /v1
和 /handlers
中)的路径参数时,我不得不更改 :
形式到 {}
形式,使 Spark 在查询 handler-id
.
的参数时不 return null
那么这两种语法有什么区别呢?
在路径中定义参数的唯一语法是 :path-param
。
查询该参数的值由String paramVal = request.params(":path-param")
完成(查询时冒号可有可无)
或者,如果您想要获得包含所有参数名称-值的地图,您可以request.params();
我不确定你为什么在查询参数时得到 null,但我猜你使用了 request.queryParams(":path-param");
。但是这个API不是用来查询你想要的path-params,而是查询一个query params,它是/api/users?userId=1234
这样的path形式的参数.
总结
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
,如果需要,您必须进行转换。
我正在使用 Java Spark 构建 REST 服务器,我想知道以下两种用于定义路径参数的语法之间的区别,使用 :path-parameter
与 {path-parameter}
:
path("/containers/:container-id", () -> { ...} )
path("/shipments/{shipment-id}", () -> { ... } )
有一次,在查询路径 /{handler-id}
(嵌套在 /v1
和 /handlers
中)的路径参数时,我不得不更改 :
形式到 {}
形式,使 Spark 在查询 handler-id
.
null
那么这两种语法有什么区别呢?
在路径中定义参数的唯一语法是 :path-param
。
查询该参数的值由String paramVal = request.params(":path-param")
完成(查询时冒号可有可无)
或者,如果您想要获得包含所有参数名称-值的地图,您可以request.params();
我不确定你为什么在查询参数时得到 null,但我猜你使用了 request.queryParams(":path-param");
。但是这个API不是用来查询你想要的path-params,而是查询一个query params,它是/api/users?userId=1234
这样的path形式的参数.
总结
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
,如果需要,您必须进行转换。