在与我的同事讨论时,出现了一个问题,即是否必须在调用OData URL过滤器中的substringof方法后添加eq true:
http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title)
http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title) eq true现在我在和ABNF for OData revised on 4/27/2012商量。看一下filter表达式形式,它需要一个boolCommonExpr
filter = "$filter" [ WSP ] "=" [ WSP] boolCommonExprboolCommonExpr将boolMethodCallExpr列为其替代方案之一。但是在ABNF中没有boolMethodCallExpr符号的定义!
因此,我猜测这是ABNF中的错误,列出的正确替代方法必须是boolMethodExpr,而不是boolMethodCallExpr。
boolMethodExpr = endsWithMethodCallExpr /
startsWithMethodCallExpr /
substringOfMethodCallExpr /
intersectsMethodCallExpr /
anyMethodCallExpr /
allMethodCallExpr在这种情况下,允许在URI中没有eq true的情况下调用substringof方法(以及使用eq true)。
我的理解正确吗?
发布于 2013-02-06 05:25:45
您不需要在URL的末尾包含“eq true”。任何返回布尔值的内置函数本身都应该足够好。这看起来可能只是ABNF中的一个打字错误(特别是考虑到boolMethodCallExpr没有定义)。这个特定的文档甚至还不完整,其中有几个待办事项。随着OData的OASIS标准化的出现,应该会出现一个更明确的ABNF。
https://stackoverflow.com/questions/14637698
复制相似问题