Sitefinity默认REST API返回已删除内容问题咨询
解决Sitefinity默认REST API返回回收站内容的问题
我之前在使用Sitefinity默认REST API做外部数据操作时,也碰到过完全一样的糟心问题——明明只想要Live状态的产品结果,回收站里已删除的内容居然也混在返回结果里!好在Sitefinity的API支持OData过滤参数,能轻松搞定这个问题。
下面给你两种实用的过滤方案,你可以根据自己的Sitefinity版本来选:
方案1:直接排除回收站内容
Sitefinity的内容项里有个专门标记是否在回收站的字段IsInRecycleBin,用它过滤最直接:
/api/default/products?$filter=IsInRecycleBin eq false
方案2:仅保留Live状态的正式内容
如果你的需求是只获取已发布的Live版本,同时排除Deleted、Draft等其他状态的内容,就用Status字段过滤:
/api/default/products?$filter=Status eq 'Live'
额外小提示
- 要是不确定字段是否适配你的Sitefinity版本,可以先不带过滤参数请求API,查看返回的产品对象里包含哪些状态相关字段(比如部分旧版本可能用
IsDeleted替代IsInRecycleBin)。 - 还可以组合多个过滤条件,比如同时确保内容是Live状态且不在回收站:
/api/default/products?$filter=Status eq 'Live' and IsInRecycleBin eq false
不得不说Sitefinity官方文档对这类细节确实覆盖得不够,不过借助OData的标准过滤能力,这类内容筛选问题基本都能解决。
内容的提问来源于stack exchange,提问作者Jake Householder




