Apache Superset权限资源API嵌套属性Rison过滤请求报错求助
问题:如何正确过滤permissions-resources API中的嵌套权限?
我正尝试为permissions-resources API端点应用过滤条件,通过_info端点获取可用过滤选项后,尝试多种Rison格式筛选嵌套的can_read权限,但所有请求均提示“The request was incorrectly performed”,希望得到正确过滤写法指导。
可用过滤选项(来自api/v1/security/permissions-resources/_info?q=(keys:!(filters)))
{"filters"=> {"permission"=> [ {"name"=>"Relation", "operator"=>"rel_o_m"}, {"name"=>"No Relation", "operator"=>"nrel_o_m"} ], "role"=>[ {"name"=>"Relation as Many", "operator"=>"rel_m_m"} ], "view_menu"=>[ {"name"=>"Relation", "operator"=>"rel_o_m"}, {"name"=>"No Relation", "operator"=>"nrel_o_m"} ] } }
无过滤返回示例(来自api/v1/security/permissions-resources/)
"result"=> [{"id"=>1, "permission"=>{"name"=>"can_read"}, "view_menu"=>{"name"=>"SavedQuery"}}, {"id"=>2, "permission"=>{"name"=>"can_write"}, "view_menu"=>{"name"=>"SavedQuery"}}, {"id"=>3, "permission"=>{"name"=>"can_read"}, "view_menu"=>{"name"=>"CssTemplate"}}, {"id"=>4, "permission"=>{"name"=>"can_write"}, "view_menu"=>{"name"=>"CssTemplate"}}, ....
尝试过的错误请求
api/v1/security/permissions-resources/?q=(filters:!((col:permission,opr:rel_o_m,value:can_read))) # 尝试嵌套格式 api/v1/security/permissions-resources/?q=(filters:(permission:!((col:name,opr:rel_o_m,value:can_read)))) api/v1/security/permissions-resources/?q=(filters:(permission:!(col:name,opr:rel_o_m,value:can_read)))
正确的过滤写法
根据API提供的过滤规则,permission字段仅支持rel_o_m/nrel_o_m关联操作符,需要将value设置为匹配嵌套结构的对象,正确的请求URL如下:
api/v1/security/permissions-resources/?q=(filters:!((col:permission,opr:rel_o_m,value:(name:can_read))))
关键说明
col:permission指定过滤的顶级字段为permissionopr:rel_o_m使用API允许的关联操作符,用于匹配嵌套对象关系value:(name:can_read)传递嵌套的权限对象结构,让API精准匹配permission.name等于can_read的条目
内容的提问来源于stack exchange,提问作者Jonathon Batson
相关产品推荐
相关产品推荐

