Power Apps Portal使用JavaScript调用Web API执行HTTP GET查询数据问题
两个API的差异
- Power Apps Portal暴露的
[Portal URI]/_api是Portal官方封装的代理接口,所有请求会先经过Portal的权限校验层,自动应用你配置的表权限、Web角色权限、字段权限,身份体系和Portal当前登录的Contact用户完全打通。 - Dataverse原生的
[Organization URI]/api/data/v9.1/是面向Dataverse后端开发的原生接口,使用独立的Azure AD身份校验体系,和Portal的Contact用户身份不互通,二者不是同一API的不同暴露入口。
数据检索操作实现方案
你不需要调用Dataverse原生API,直接使用已有的身份验证方式调用Portal Web API的GET端点即可,该接口完全支持OData查询语法,和Dataverse原生Web API的查询规则一致。
请求示例:
shell.getTokenDeferred().done(function (token) { // 示例:查询前10条客户记录的名称和ID fetch(`${window.location.origin}/_api/accounts?$select=name,accountid&$top=10`, { method: "GET", headers: { "Authorization": `Bearer ${token}`, "Accept": "application/json", "OData-MaxVersion": "4.0", "OData-Version": "4.0" } }) .then(response => response.json()) .then(result => { // 处理查询结果 console.log(result.value); }) .catch(error => console.error("查询失败:", error)); });
注意事项
你需要先在Power Apps Portal管理后台完成两个配置才能正常调用GET接口:
- 进入Web API设置页,给对应数据表启用读取权限,勾选你需要查询的字段。
- 给当前登录用户所属的Web角色配置对应数据表的读取权限,按需配置全局、父级、自有等权限范围。
内容的提问来源于stack exchange,提问作者user210757
相关产品推荐
相关产品推荐

