Вот график формы API JSON, который вы можете использовать:
POST https://graph.microsoft.com/v1.0/$batch
Accept: application/json
Content-Type: application/json
Пример json для другого запроса будет выглядеть следующим образом:
{
"requests": [
{
"id": "1",
"method": "GET",
"url": "/me/drive/root:/{file}:/content"
},
{
"id": "2",
"method": "GET",
"url": "/me/planner/tasks"
},
{
"id": "3",
"method": "GET",
"url": "/groups/{id}/events"
},
{
"id": "4",
"url": "/me",
"method": "PATCH",
"body": {
"city" : "Redmond"
},
"headers": {
"Content-Type": "application/json"
}
}
]
}
Ответы на пакетные запросы могут отображаться в другом порядке. Свойство id можно использовать для сопоставления отдельных запросов и ответов.
Вот пример ответа на вышеуказанный запрос:
{
"responses": [
{
"id": "1",
"status": 302,
"headers": {
"location": "https://b0mpua-by3301.files.1drv.com/y23vmagahszhxzlcvhasdhasghasodfi"
}
},
{
"id": "3",
"status": 401,
"body": {
"error": {
"code": "Forbidden",
"message": "..."
}
}
},
{
"id": "2",
"status": 200,
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.plannerTask)",
"value": []
}
},
{
"id": "4",
"status": 204,
"body": null
}
]
}
В c # вы можете просто использовать httpclient и опубликовать запрос json.
Формат запроса
Пакетные запросы всегда отправляются с помощью POST на конечную точку / $ batch.
Тело пакетного запроса JSON состоит из одного объекта JSON с одним обязательным свойством: запросы. Свойство запросы представляет собой массив отдельных запросов. Для каждого отдельного запроса требуются свойства id, method и url.
Свойство id действует в основном как значение корреляции, чтобы связать отдельные ответы с запросами. Это позволяет серверу обрабатывать запросы в пакете в наиболее эффективном порядке.
Метод и свойства url - это именно то, что вы увидите в начале любого данного HTTP-запроса. Метод - это метод HTTP, а URL - это URL ресурса, на который обычно отправляется отдельный запрос.
Индивидуальные запросы также могут содержать свойство headers и body body. Оба эти свойства обычно являются объектами JSON, как показано в предыдущем примере. В некоторых случаях тело может представлять собой значение в кодировке URL base64, а не объект JSON, например, когда тело является изображением. Когда тело включается в запрос, объект заголовков должен содержать значение для Content-Type.
В качестве альтернативы я бы предложил вам использовать программирование, управляемое облачными событиями, в подобных сценариях. Вы можете сделать следующее:
1) Создать очередь для хранения событий или команд
2) Нажмите команду из консольного приложения.
3) Обработайте его из функции веб-задания или Azure, которая будет асинхронной.
Надеюсь, это поможет.