它是一个有效的ODataURI(ODataABNF文档中是否存在bug)?

它是一个有效的ODataURI(ODataABNF文档中是否存在bug)?,odata,Odata,在与同事的讨论中,出现了一个问题,即在OData URL筛选器中调用substringof方法之后,是否必须添加eq true: http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title) http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title) eq true 现在,我正在咨询。查看过滤器表达式表单,它需要一个b

在与同事的讨论中,出现了一个问题,即在OData URL筛选器中调用
substringof
方法之后,是否必须添加
eq true

http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title)
http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title) eq true
现在,我正在咨询。查看
过滤器
表达式表单,它需要一个
boolCommonExpr

filter                      =   "$filter" [ WSP ] "=" [ WSP] boolCommonExpr
boolMethodExpr              =   endsWithMethodCallExpr /
                                startsWithMethodCallExpr /
                                substringOfMethodCallExpr /                                         
                                intersectsMethodCallExpr /
                                anyMethodCallExpr /
                                allMethodCallExpr
boolCommonExpr
boolMethodCallExpr
列为其备选方案之一。但是ABNF中的
boolMethodCallExpr
符号没有定义

因此,我猜这是ABNF中的一个bug,并且列出的正确选项必须是
boolMethodExpr
,而不是
boolMethodCallExpr

filter                      =   "$filter" [ WSP ] "=" [ WSP] boolCommonExpr
boolMethodExpr              =   endsWithMethodCallExpr /
                                startsWithMethodCallExpr /
                                substringOfMethodCallExpr /                                         
                                intersectsMethodCallExpr /
                                anyMethodCallExpr /
                                allMethodCallExpr
在这种情况下,对
substringof
方法的调用允许在URI中没有
eq true
的情况下进行(以及使用
eq true


我的理解正确吗?

您不需要在URL的末尾添加“eq true”。任何返回布尔值的内置函数本身都应该足够好。这看起来可能只是ABNF中的一个输入错误(特别是考虑到boolMethodCallExpr没有定义)。那个特定的文档甚至不完整,其中有几个待办事项。随着OData的OASIS标准化的到来,一个更明确的ABNF应该即将出台