BatchRequestContent breaks on Node20+
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 45/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- node.js, typescript
调研方向
Start with BatchRequestContent and reproduce the relative-URL case on Node 20 using the example in the issue. Trace how request URLs are constructed, including client.api(relativeUrl)'buildFullUrl' and the reported double-host behavior. Done means the documented batch-request pattern works with relative URLs without prepending the API host twice.
由索引模型根据 Issue 内容生成。
描述
Describe the bug
While using older Node versions without undici fetch, we used the BatchRequestContent class of the Graph SDK to create batch requests. This operates on standard Request objects, but appears to use them mostly as URL containers, not actually sending those requests, because relative URLs are supported:
new BatchRequestContent([
{id: "1", request: new Request("/users/foo@domain.com")},
{id: "2", request: new Request("/users/bar@domain.com")}
]);
Since upgrading to Node 20 (way overdue, I know!), this pattern breaks, because the Request constructor does not support relative URLs:
TypeError: Failed to parse URL from users/foo@domain.com
at new Request (node:internal/deps/undici/undici:9580:19)
How is the BatchRequestContent class intended to be used on Node 20+? Couldn't the SDK define a BatchRequestContainer class that implements Request while merely functioning as an URL container, supporting the previous pattern of relative URLs? Or perhaps a static BatchRequestStep helper?
Or should clients have to manually extract the base URL of the API and prepend it to all batch request steps? What is the preferred way of doing so?
Rather than hard-coding it, I realized I could do client.api(relativeUrl)['buildFullUrl']() but this relies on a private method.
Edit: I realized that even if i DO supply a full URL, I will instead get an error Resource not found for the segment 'v1.0, supposedly because the API host will be prepended twice.
Expected behavior
BatchRequestContent should work with relative URLs on Node 20+
How to reproduce
Create a batch request content and pass one or more relative URLs like /users/foo
SDK Version
3.0.7
Latest version known to work for scenario above?
No response
Known Workarounds
No response
Debug output
Click to expand log
```</details>
### Configuration
_No response_
### Other information
_No response_
- 主要语言
- TypeScript
- 星标
- 833
- 派生
- 240
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoftgraph/msgraph-sdk-javascript 的其他 Issue
-
status:waiting-for-triage
难度 1/5 1 小时以内 新手友好度 62/100
-
Is anyone here? 未关闭
难度 4/5 3-5 天 新手友好度 25/100
microsoftgraph/msgraph-sdk-javascript#2005 · 1 个 reaction ·
-
status:waiting-for-triage
难度 5/5 一周以上 新手友好度 42/100
-
status:waiting-for-triage type:bug
难度 3/5 1-2 天 新手友好度 48/100
microsoftgraph/msgraph-sdk-javascript#1999 · 2 条评论 · 1 个 reaction ·
-
难度 3/5 1-2 天 新手友好度 35/100
查看 microsoftgraph/msgraph-sdk-javascript 的全部 Issue
相似的 Issue
-
check:passed streams:add
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 2/5 1-3 小时 新手友好度 76/100
-
难度 2/5 1-3 小时 新手友好度 68/100
-
usability
难度 2/5 1-3 小时 新手友好度 68/100
inmanta/web-console#7367 ·
-
难度 1/5 1 小时以内 新手友好度 78/100
nearform/ag-grid-url-sync#160 ·