0

在与我的同事的讨论中,出现了一个问题,即是否必须eq true在调用substringofOData URL 过滤器中的方法后添加:

http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title)
http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title) eq true

现在我正在咨询ABNF for OData 于 4/27/2012 修订。查看filter表达式形式,它需要一个boolCommonExpr

filter                      =   "$filter" [ WSP ] "=" [ WSP] boolCommonExpr

AboolCommonExprboolMethodCallExpr其列为其替代方案之一。但是boolMethodCallExprABNF 中没有符号的定义!

所以,我猜这是 ABNF 中的一个错误,并且列出的正确替代方案必须是boolMethodExpr,而不是boolMethodCallExpr

boolMethodExpr              =   endsWithMethodCallExpr /
                                startsWithMethodCallExpr /
                                substringOfMethodCallExpr /                                         
                                intersectsMethodCallExpr /
                                anyMethodCallExpr /
                                allMethodCallExpr

substringof在这种情况下,允许在 URI 中不调用方法eq true(以及 with eq true)。

我的理解正确吗?

4

1 回答 1

1

您不需要在 URL 的末尾添加“eq true”。任何返回布尔值的内置函数都应该足够好。这看起来可能只是 ABNF 中的一个错字(尤其是在未定义 boolMethodCallExpr 的情况下)。该特定文档甚至不完整,并且其中包含多个 TODO。随着 OData 的 OASIS 标准化结合在一起,应该会出现更明确的 ABNF。

于 2013-02-05T21:25:44.837 回答