规范和正确使用(布尔)URI矩阵参数(并在使用CXF / JAXB时使它们可选)?

时间:2013-11-24 23:15:32

标签: rest jaxb cxf uri specifications

我想知道是否在规范中定义了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时,布尔矩阵参数表示为:“valuetrueidentifier时,value省略false

我还没有找到矩阵参数的“ ”规范。有没有?它是否提到应该如何使用布尔矩阵参数?如果没有,是否有既定的最佳实践?

并且,作为一个额外的问题:您在使用CXF(JAXB)时是否可以省略布尔URL矩阵参数,或者您是否总是必须指定它们?

干杯! :)

更新:我们正在使用CXF(显然在引擎盖下使用JAXB ......)

2 个答案:

答案 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包装类来支持可选的布尔值。值truefalse将映射到正确的布尔值。

@MatrixParam("sortByDate") Boolean sortByDate

如果param不存在,它将为null。请注意,在处理JAX-RS参数时,JAXB不适用。