Plone REST API:如何基于对象内的值过滤搜索结果?
基于嵌套对象值过滤搜索结果的解决方案
可以基于对象内的值过滤结果,以下是针对两个端点的正确操作方式:
使用@search端点
@search端点需要通过结构化的请求体来指定过滤规则,不能直接把priority.token=1作为参数传递。正确的做法是在请求体中同时指定查询范围和过滤条件:
{ "query": "*", "filter": "priority.token = '1'" }
query字段是必填项,用*表示匹配所有条目;filter字段用来定义过滤规则,这里通过priority.token定位到嵌套字段,精确匹配值为'1'的条目。
使用@querystring-search端点
这个端点支持通过URL查询参数来设置过滤条件,需要用filter参数来指定嵌套字段的匹配规则:
@querystring-search?filter=priority.token%20%3D%20%271%27
如果是在代码中构造请求,未编码的参数格式是filter=priority.token = '1',注意要对空格、等号、单引号这些特殊字符做URL编码。
关于之前的报错原因
你直接传递priority.token=1时,系统会把它当成对priority索引字段的查询请求,但priority是对象类型,这种方式缺少了必填的query关键字段,因此抛出了错误。必须通过filter参数来明确指定嵌套字段的过滤逻辑。
内容的提问来源于stack exchange,提问作者Abdallah El-Yaddak
相关产品推荐
相关产品推荐

