microsoftgraph / microsoftgraph/msgraph-sdk-python

BatchRequestItem use absolute url path instead of relative when, causing "Ressource not found" 400 error

未关闭
#1,015 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

priority:p1 type:bug
主要语言
Python
星标
630
派生
96
平均合并
15 小时 20 分钟
30 天内合并 PR
3

描述

Describe the bug

Here is my code :

batch_requests = BatchRequestContent()
for message_id in message_ids:
  query_params = MessagesRequestBuilder.MessagesRequestBuilderGetQueryParameters(
      select=[
        'id',
        'conversationId',
        'internetMessageId',
        'subject',
        'body',
        'bodyPreview',
        'from',
        'toRecipients',
        'ccRecipients',
        'bccRecipients',
        'receivedDateTime',
        'sentDateTime',
        'internetMessageHeaders',
        'isRead',
        'isDraft',
        'importance',
        'hasAttachments',
        'categories',
      ]
    )
    request_configuration = RequestConfiguration(
      query_parameters=query_params
    )
    request = service.me.messages.by_message_id(message_id).to_get_request_information(
      request_configuration=request_configuration
    )
    request_id = str(uuid.uuid4())
    batch_request_item = BatchRequestItem(id=request_id, request_information=request)
    #   batch_request_item.url = batch_request_item.url.replace('https://graph.microsoft.com/v1.0', '')
    batch_requests.add_request(request_id=request_id, request=batch_request_item)

Without the line I've commented, it causes a 400 "Resource not found for the segment 'https:'".
I figured out the problem by looking at your code.

I guess it is not the behavior as you intended.

Expected behavior

The server answer a code HTTP 200

How to reproduce

1 - List message ids from Outlook
2 - Try to get the email content in batch

SDK Version

No response

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_

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先使用 Python 示例跟踪 BatchRequestItem 和 BatchRequestContent.add_request,然后检查批处理操作的请求 URL 是如何构造的。使用 Outlook 消息批处理复现来验证行为,并确认提交的项目使用相对路径,且无需 workaround 即可收到 HTTP 200。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
api
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。