我想知道是否在规范中定义了URI / URL 矩阵参数的“正确”用法,例如RFC或W3推荐?
特别是,我刚加入了一个项目,我们使用矩阵参数和Java框架来实现REST服务。我们为REST服务提供的矩阵参数之一是布尔值,与;sortByDate=true
我对这个问题感到困惑的是,我们使用的Java框架显然坚持认为布尔参数总是被传入(即你不能使它们成为可选/省略它们;可能是因为它们被转换为Java布尔类型)。我觉得这有点奇怪......
我必须仔细检查我们明天使用的框架(我认为它是JAXB),但同时我想知道矩阵参数是否在某个官方规范中定义,如果这样的规范提到了布尔参数。< / p>
到目前为止,我在W3的“ HTML 4.01规范”的Appendix B 2.2中找到了一个提示(虽然没有提到布尔矩阵参数):
我们建议HTTP服务器实现者,特别是CGI实现者支持使用“;”取代“&amp;”为作者省去逃避“&amp;”的麻烦这种方式的人物。
“ Web Application Description Language ”规范指定:
当
;
为name
时,布尔矩阵参数表示为:“value
”true
,identifier
时,value
省略false
我还没有找到矩阵参数的“ ”规范。有没有?它是否提到应该如何使用布尔矩阵参数?如果没有,是否有既定的最佳实践?
并且,作为一个额外的问题:您在使用CXF(JAXB)时是否可以省略布尔URL矩阵参数,或者您是否总是必须指定它们?
干杯! :)
更新:我们正在使用CXF(显然在引擎盖下使用JAXB ......)
答案 0 :(得分:4)
RFC3986描述了矩阵参数,但没有明确命名它们。引用http://tools.ietf.org/html/rfc3986#section-3.3:
例如,分号(“;”)和等号(“=”)保留字符通常用于分隔适用于该段的参数和参数值。逗号(“,”)保留字符通常用于类似目的。例如,一个URI生成器可能使用诸如“name; v = 1.1”之类的段来表示对“name”的版本1.1的引用,而另一个URI生成器可能使用诸如“name,1.1”之类的段来表示相同的内容。 / p>
我希望这会有所帮助。
答案 1 :(得分:1)
我认为这个答案在解释矩阵参数的目的方面做得很好:
https://stackoverflow.com/a/5602678
您可以使用Boolean包装类来支持可选的布尔值。值true
和false
将映射到正确的布尔值。
@MatrixParam("sortByDate") Boolean sortByDate
如果param不存在,它将为null。请注意,在处理JAX-RS参数时,JAXB不适用。