You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dataverse OData调用RetrieveAvailableLanguages判断返回数组是否含指定ID

问题结论

RetrieveAvailableLanguages 是 Dynamics 365 Web API 提供的非实体集合类自定义函数,本身不支持追加 $filter、in 等 OData 集合查询参数直接过滤返回的 LocaleIds 数组,你尝试的直接加查询参数的方式不符合该接口的设计规则,无法生效。

可行实现方案

方案1:客户端直接校验(推荐,实现成本最低)

直接调用原始接口,在业务代码层对返回结果做判断即可,以下是JavaScript参考示例:

// 入参为你要校验的目标语言ID,比如简体中文为2052,英文为1033
async function isLocaleAvailable(targetLocaleId) {
  const res = await fetch("https://ORG_NAME.crm.dynamics.com/api/data/v9.0/RetrieveAvailableLanguages", {
    headers: {
      "OData-MaxVersion": "4.0",
      "OData-Version": "4.0"
    }
  });
  const result = await res.json();
  return result.LocaleIds.includes(targetLocaleId);
}

// 调用示例
const hasEnglish = await isLocaleAvailable(1033);

方案2:服务端查询替代(适合必须在API层完成过滤的场景)

你可以通过查询系统内置的organization实体的installedlanguages属性实现API层的校验,该属性存储了所有已安装语言的ID,是逗号拼接的字符串格式,支持OData查询运算符:

  • 查询URL示例(校验是否存在ID为2052的语言):
https://ORG_NAME.crm.dynamics.com/api/data/v9.0/organizations?$select=installedlanguages&$filter=contains(installedlanguages, ',2052,')

注意:在contains参数中给目标ID前后补充逗号,是为了避免误匹配到位数更长、包含目标ID片段的其他语言ID。
如果该接口返回的结果不为空,就说明目标语言存在。

内容的提问来源于stack exchange,提问作者greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:18:02