英文:
Batch request to Microsoft Graph returns "message": "Url specified is invalid."
问题
以下是您提供的代码部分的翻译:
{
  "requests": [
    {
      "id": "01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ",
      "method": "GET",
      "url": "https://graph.microsoft.com/v1.0/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ/thumbnails?select=large"
    },
    {
      "id": "01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG",
      "method": "GET",
      "url": "https://graph.microsoft.com/v1.0/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG/thumbnails?select=large"
    }
  ]
}
以下是您提供的响应部分的翻译:
{
  "responses": [
    {
      "id": "01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG",
      "status": 400,
      "headers": {
        "Content-Type": "application/json"
      },
      "body": {
        "error": {
          "code": "BadRequest",
          "message": "Url specified is invalid.",
          "innerError": {
            "date": "2023-05-17T18:17:39",
            "request-id": "7bb48670-f436-4c16-8137-9d70abe92dab",
            "client-request-id": "7bb48670-f436-4c16-8137-9d70abe92dab"
          }
        }
      }
    },
    {
      "id": "01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ",
      "status": 400,
      "headers": {
        "Content-Type": "application/json"
      },
      "body": {
        "error": {
          "code": "BadRequest",
          "message": "Url specified is invalid.",
          "innerError": {
            "date": "2023-05-17T18:17:39",
            "request-id": "7bb48670-f436-4c16-8137-9d70abe92dab",
            "client-request-id": "7bb48670-f436-4c16-8137-9d70abe92dab"
          }
        }
      }
    }
  ]
}
请注意,这些翻译是您提供的代码和响应的直译翻译,不包含其他信息。如果您需要进一步的帮助或解释,请随时提问。
英文:
{
  requests: [
        {
      id: '01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ',
      method: 'GET',
      url: 'https://graph.microsoft.com/v1.0/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ/thumbnails?select=large'        
        },
        {
      id: '01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG',
      method: 'GET',
      url: 'https://graph.microsoft.com/v1.0/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG/thumbnails?select=large'        
        }
    ]
}
Above is the batchPayload (testing with only 2 items) passed to my callMsGraph(token, batchUrl, batchPayload) function. And below is the received batchResponse:
{
    "responses": [
        {
            "id": "01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG",
            "status": 400,
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "error": {
                    "code": "BadRequest",
                    "message": "Url specified is invalid.",
                    "innerError": {
                        "date": "2023-05-17T18:17:39",
                        "request-id": "7bb48670-f436-4c16-8137-9d70abe92dab",
                        "client-request-id": "7bb48670-f436-4c16-8137-9d70abe92dab"
                    }
                }
            }
        },
        {
            "id": "01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ",
            "status": 400,
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "error": {
                    "code": "BadRequest",
                    "message": "Url specified is invalid.",
                    "innerError": {
                        "date": "2023-05-17T18:17:39",
                        "request-id": "7bb48670-f436-4c16-8137-9d70abe92dab",
                        "client-request-id": "7bb48670-f436-4c16-8137-9d70abe92dab"
                    }
                }
            }
        }
    ]
}
I have tested the urls as individual GET requests in postman, and they are indeed valid. But the POST response to batchUrl https://graph.microsoft.com/v1.0/$batch is returning that they are invalid?
I don't see how the URL could be malformed in anyway. I initially called each URL separately (without batching) with callMsGraph(accessToken, graphEndpoint) and the responses were fine -- the URLs are unchanged. I ofcourse want to utilize batching to reduce individual network requests.
My callMsGraph:
function callMsGraph(accessToken, graphEndpoint, payload) {
    const headers = new Headers();
    const bearer = `Bearer ${accessToken}`;
    headers.append("Authorization", bearer);
    headers.append("Content-Type", "application/json");
    const options = {
        method: "POST",
        headers: headers,
        body: JSON.stringify(payload)
    };
    return fetch(graphEndpoint, options)
        .then(response => response.json())
    ....
    ...
答案1
得分: 1
在批量请求中,您的URL应该是相对的 https://learn.microsoft.com/en-us/graph/json-batching
> 必需的。这是个相对资源URL,通常用于发送单个请求。因此,虽然绝对URL是 https://graph.microsoft.com/v1.0/users,但这个URL是 /users。
所以类似于
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
{
requests: [
{
id: '01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ',
method: 'GET',
url: '/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ/thumbnails?select=large'     
},
{
id: '01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG',
method: 'GET',
url: '/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG/thumbnails?select=large'     
}
]
}
<!-- end snippet -->
英文:
In a batch request you URL's should be relative https://learn.microsoft.com/en-us/graph/json-batching
> Required. The relative resource URL the individual request would typically be sent to. Therefore, while the absolute URL is https://graph.microsoft.com/v1.0/users, this url is /users.
so something like
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
{
  requests: [
        {
      id: '01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ',
      method: 'GET',
      url: '/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KKIKZVLU4SXJZAI6PD76QD3PUVQ/thumbnails?select=large'        
        },
        {
      id: '01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG',
      method: 'GET',
      url: '/sites/bpmgroup.sharepoint.com,23e7ef7a-a529-4dde-81ba-67afb4f44401,0fa8e0f7-1c76-4ad0-9b6e-a485f9bfd63c/drive/items/01GNYB5KNZCQTFLFPNQNCJZXQVQWIBQWLG/thumbnails?select=large'        
        }
    ]
}
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论