Працюючи з даними Microsoft 365, такими як електронна пошта, календарі, контакти або завдання, не завжди потрібно отримувати всі елементи. Також корисно мати можливість фільтрувати, сортувати та отримувати конкретні властивості даних у ваших поштових додатках. Наприклад, фільтрація повідомлень за відправником, сортування подій календаря за датою або отримання лише кількох полів може допомогти зберегти швидкість вашого додатку.

Саме тут на допомогу приходять запити OData. Microsoft Graph підтримує OData, щоб допомогти розробникам фільтрувати, сортувати та вибирати дані безпосередньо на сервері, ще до того, як вони будуть відправлені у ваш застосунок. Результат — швидша продуктивність, менші об’єми даних і більш реактивні застосунки.

Aspose.Email for .NET робить цей процес простим за допомогою свого класу [ODataQueryBuilder][2]. У цій статті ми розглянемо, як він працює і як ви можете використати його для створення динамічних, потужних запитів Microsoft Graph у C#.

Навіщо використовувати OData запити?

Microsoft Graph API пропонує широкий спектр функцій, але може бути складним при ручному створенні запитів. Параметри OData дозволяють виконувати фільтрацію, сортування, пагінацію та вибір властивостей на боці сервера, що мінімізує обробку на боці клієнта. Такий підхід підвищує ефективність, зменшуючи обсяг переданих даних і прискорюючи час відповіді, роблячи ваші застосунки швидшими та більш масштабованими.

З підтримкою OData ви тепер можете:

  • Фільтруйте повідомлення, контакти або події, використовуючи власні умови.
  • Сортуйте дані за допомогою OrderBy у зростаючому або спадному порядку.
  • Вибирайте лише потрібні властивості, щоб мінімізувати розмір корисного навантаження.
  • Реалізуйте посторінкову навігацію за допомогою Top і Skip, що ідеально підходить для великих поштових скриньок.
  • Розширюйте пов’язані сутності (наприклад, вкладення) за допомогою Expand.
  • Підраховуйте та шукайте набори даних для швидшого доступу.

Ці можливості доступні та типобезпечені через новий клас [ODataQueryBuilder][2].

Ваш .NET компонент для створення запитів Microsoft Graph на C#

Aspose.Email for .NET — потужний API для обробки електронної пошти, який дозволяє розробникам безпосередньо працювати з даними Microsoft 365, Exchange та Outlook у C#. Він підтримує читання та запис популярних форматів електронної пошти, таких як MSG, EML, PST і MBOX, і інтегрується з різними протоколами та сервісами, включаючи Microsoft Graph API.

Використовуючи вбудований [ODataQueryBuilder][2], ви можете створювати динамічні та типобезпечні OData‑запити в C#. Це спрощує фільтрацію, сортування та отримання конкретних даних поштової скриньки — повідомлень, контактів або подій календаря без необхідності вручну писати складні рядки запитів.

Перенісши логіку запитів на сервер Microsoft Graph, Aspose.Email for .NET допомагає розробникам створювати швидші, більш ефективні та масштабовані застосунки, які взаємодіють з даними Microsoft 365.

Щоб розпочати, встановіть пакет NuGet Aspose.Email у вашому проєкті .NET:

Install-Package Aspose.Email

Цей пакет включає всі необхідні класи, які задовольнять ваші потреби.

Представляємо клас ODataQueryBuilder

Клас [Aspose.Email.Clients.Graph.ODataQueryBuilder][2] створений для спрощення написання запитів Graph. Ви можете використовувати його з кількома методами клієнта Graph, включаючи:

  • ListFolders
  • ListMessages
  • ListContacts
  • ListCalendarItems
  • ListAttachments
  • ListCategories
  • ListOverrides
  • ListRules
  • ListTaskLists
  • ListTasks
  • ListNotebooks

Кожен підтримує необов’язковий параметр ODataQueryBuilder для розширеного фільтрування, сортування, пагінації та вибору, безпосередньо у ваших запитах Graph.

Практичний приклад: Фільтрація та сортування даних поштової скриньки

Нижче наведений приклад коду демонструє як базові, так і розширені сценарії запитів. Він показує сортування папок та розширене фільтрування повідомлень, ілюструючи параметри OData для порядку, критеріїв, пагінації, вибраних полів та розширення пов’язаних сутностей.

var accessParameters = Settings.User1;
var provider = new AzureConfidentialTokenProvider(
    accessParameters.TenantId,
    accessParameters.ClientId,
    accessParameters.ClientSecret);

var client = GraphClient.GetClient(provider, accessParameters.TenantId);
client.Resource = Aspose.Email.Clients.Graph.ResourceType.Users;
client.ResourceId = accessParameters.Username;
client.EndPoint = "https://graph.microsoft.com";

// List folders sorted by name
var builder = new ODataQueryBuilder { OrderBy = "name asc" };
var folders = client.ListFolders(builder);
foreach (var folder in folders)
    Console.WriteLine(folder.DisplayName);

// Advanced message filtering
var folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
builder = new ODataQueryBuilder {
    Filter = "startswith(name,'A')",
    OrderBy = "name asc",
    Top = 10,
    Skip = 5,
    Select = new[] { "name", "age" },
    Expand = new[] { "children", "parents" },
    Count = true,
    Search = "\"John Doe\"",
    Format = "json"
};
var msgs = client.ListMessages(folderId, builder);
foreach (var msg in msgs)
    Console.WriteLine(msg.Subject);

Сценарії реального світу

Розгляньте кілька практичних ситуацій, у яких [ODataQueryBuilder][2] можна застосувати для покращення роботи з даними Microsoft Graph у ваших .NET застосунках:

1. UI Списки папок
Сортуйте папки за алфавітом [OrderBy][3] = "name asc" для чистого інтерфейсу користувача.

2. Користувацьке фільтрування
Використовуйте [Filter][4], щоб знайти повідомлення від певних відправників або з певними темами.

3. Пагінація великих поштових скриньок
Об’єднайте [Top][5] і [Skip][6], щоб розбити великі поштові скриньки на керовані результати.

4. Виберіть конкретні властивості
Отримуйте лише потрібні поля за допомогою [Select][7], щоб мінімізувати обсяг даних і підвищити швидкість роботи.

5. Включення пов’язаних даних
Використовуйте [Expand][8], щоб включити вкладення, категорії або теми в одному запиті.

Поради щодо ефективного використання OData

  • Підтвердіть, що ваш GraphClient точно вказує Resource, ResourceId та EndPoint.
  • Виберіть відповідного постачальника автентифікації, наприклад [AzureConfidentialTokenProvider][13].
  • Поєднайте [Filter][4], [Select][7], [OrderBy][3] та [Top][5] для оптимальних запитів.
  • Використовуйте [Count][14] для отримання загальної кількості елементів без завантаження всіх даних.
  • Підготуйте логіку пагінації для ефективної обробки великих наборів даних.

Висновок

У цій статті ми дізналися, як використовувати клас [ODataQueryBuilder][2] бібліотеки Aspose.Email for .NET для створення та виконання запитів Microsoft Graph. Замість того, щоб складати синтаксис OData вручну, тепер ви можете створювати типобезпечні, динамічні та читабельні запити безпосередньо у вашому коді C#. Впровадження підтримки OData запитів у Aspose.Email for .NET дає змогу розробникам створювати розумніші, більш ефективні додатки, які взаємодіють з Microsoft Graph.

Готові створювати швидші та більш ефективні .NET застосунки з Microsoft Graph?

Дивіться також