Microsoft Graph批量请求:如何将首个API响应传入第二个API?
Microsoft Graph批量请求中传递前序请求响应到后续请求的正确方式
先修正你代码里的几个关键错误,再给出正确的实现方案:
基础错误修正
- 第一个请求的URL拼写错误:
/userse需改为/users getPresencesByUserId接口要求POST方法(而非你写的GET),且需使用完整相对路径/communications/getPresencesByUserId- Microsoft Graph批量请求有自己的响应引用语法,和第三方平台规则不同,不要混用
正确实现代码
const batchRequestContent = { requests: [ { id: "1", url: "/users?$select=id", // 仅获取所需的id字段,减少数据传输 method: "GET", headers: { ConsistencyLevel: "eventual", }, }, { id: "2", dependsOn: ["1"], // 确保请求2在请求1执行完成后触发 url: "/communications/getPresencesByUserId", method: "POST", // 该接口要求POST方法 headers: { "Content-Type": "application/json", }, body: { // 引用请求1响应中的所有用户id ids: ["$responses[1].value[*].id"] }, }, ], }; const response = await _MSGraphClient.api("$batch").post(batchRequestContent);
关键语法说明
$responses[1].value[*].id是Microsoft Graph批量请求的专属引用语法:$responses[1]指向id为"1"的请求的完整响应value[*].id遍历响应中value数组的每一项,自动提取所有id字段并组成数组
- 若需要筛选特定范围的id,可调整路径,比如取前5个用户id:
$responses[1].value[0..4].id
内容的提问来源于stack exchange,提问作者shymano16hz
相关产品推荐
相关产品推荐

