【问题标题】:How to filter response with query parameters on POST methods on Microsoft Graph API?如何使用 Microsoft Graph API 上的 POST 方法上的查询参数过滤响应?
【发布时间】:2025-12-13 17:25:01
【问题描述】:

我正在尝试在我的办公室内制作一个简单的房间预订应用程序。用户可以选择一个时间范围、查看可用房间并预订房间(在该房间的那个时间范围内在他们的日历中创建一个活动)。

为了查看可用的房间,我尝试使用 Microsoft Graph REST API,特别是 POST 方法 - getSchedule

getSchedule 的示例请求如下所示

{        
    "schedules": ["adelev@contoso.onmicrosoft.com", "meganb@contoso.onmicrosoft.com"],
    "startTime": {
        "dateTime": "2019-03-15T09:00:00",
        "timeZone": "Pacific Standard Time"
    },
    "endTime": {
        "dateTime": "2019-03-15T18:00:00",
        "timeZone": "Pacific Standard Time"
    },
    "availabilityViewInterval": "60"
}

我将办公室中的所有房间都放在日程表中,然后可以根据可用性视图在响应中查看它们的可用性。

"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.scheduleInformation)",
    "value": [
        {
            "scheduleId": "adelev@contoso.onmicrosoft.com",
            "availabilityView": "000220000",
            "scheduleItems": [
                {
                    "isPrivate": false,
                    "status": "busy",
                    "subject": "Let's go for lunch",
                    "location": "Harry's Bar",
                    "start": {
                        "dateTime": "2019-03-15T12:00:00.0000000",
                        "timeZone": "Pacific Standard Time"
                    },
                    "end": {
                        "dateTime": "2019-03-15T14:00:00.0000000",
                        "timeZone": "Pacific Standard Time"
                    }
                }
            ],
            "workingHours": {
                "daysOfWeek": [
                    "monday",
                    "tuesday",
                    "wednesday",
                    "thursday",
                    "friday"
                ],
                "startTime": "08:00:00.0000000",
                "endTime": "17:00:00.0000000",
                "timeZone": {
                    "name": "Pacific Standard Time"
                }
            }
        },

但是,我不需要回复中提供的任何其他信息。我只想查看 scheduleId 和 availabilityView,因为响应需要永远加载调度请求中的许多房间。

我一直在寻找通过 POST 请求中的参数过滤响应的可用方法:https://docs.microsoft.com/en-us/graph/query-parameters。但是,我似乎对我的地址应用的任何过滤器似乎对响应没有任何影响。

我试过了

https://graph.microsoft.com/v1.0/me/calendar/getschedule?$select=availabilityView

对于请求和其他类似的变体没有任何成功。它们都返回完整的 JSON 响应。

【问题讨论】:

    标签: api outlook microsoft-graph-api schedule microsoft-graph-calendar


    【解决方案1】:

    这是 OData 协议限制。查询数据只能在 GET 请求上进行,如文档中所述 here
    除了要求更少的房间开始。更短的时间或更大的间隔,我认为今天没有办法获得更少的数据。

    【讨论】:

    • 你知道吗,我们如何获取多个日历的时间表,默认情况下它只返回默认日历的时间表
    • 请将此作为单独的问题提出。
    • 我已将此作为单独的问题提出 - *.com/questions/63556249/… 但没有得到任何回复,请您帮忙