開発プロキシは、アプリケーションが SDK を使用せずに Microsoft Graph API 要求を行っていることを検出すると、SDK への移行を提案します。 このガイダンスは、Microsoft Graph SDK によって Microsoft Graph API の操作が大幅に簡素化され、より堅牢なアプリケーションの構築に役立つためです。
Microsoft Graph SDK の利点
Microsoft Graph SDK は、生の HTTP 呼び出しよりも多くの利点を提供します。
組み込みの認証処理
SDK は、Microsoft Authentication Library (MSAL) などの認証ライブラリと統合され、トークンの取得、更新、管理を自動的に処理します。 OAuth 2.0 フローを手動で実装したり、トークンの有効期限について心配したりする必要はありません。
スロットリングに対する自動再試行ロジック
Microsoft 365 サービスは、サービスの信頼性を確保するために 調整を 実装します。 アプリケーションが 429 Too Many Requests 応答を受け取ると、SDK は適切なバックオフ遅延で再試行を自動的に処理し、Microsoft Graph が返す Retry-After ヘッダーを考慮します。
適切なページ処理
多くの Microsoft Graph エンドポイントは、ページ分割された結果を返します。 SDK には、後続のページのフェッチを透過的に処理する組み込みの反復子が用意されているため、 @odata.nextLink 値を手動で追跡して他の要求を行う必要はありません。
型安全性と IntelliSense
SDK は、要求と応答に厳密に型指定されたモデルを提供し、IDE で IntelliSense のサポートを提供します。 型モデルは、実行時ではなくコンパイル時に問題をキャッチすることで、エラーを減らし、開発を高速化します。
バッチ処理のサポート
SDK では、 複数の要求を 1 つの HTTP 呼び出しにバッチ処理することがサポートされており、ネットワークオーバーヘッドが削減され、パフォーマンスが向上します。 バッチ処理は、個々のリクエストの数を減らすことで、スロットリング制約内に留まるのにも役立ちます。
デルタ クエリ
SDK を使用すると、最後の要求以降のデータ変更を効率的に同期できる デルタ クエリ の実装が簡略化されます。 デルタ クエリを使用することは、Microsoft 365 データとの同期を維持する必要がある応答性の高いアプリケーションを構築するために不可欠です。
カスタマイズのためのミドルウェア アーキテクチャ
SDK では、カスタマイズ可能なミドルウェア パイプラインを使用して、ログ記録の追加、ヘッダーの変更、カスタム再試行ポリシーの実装、またはアプリケーション コードを変更せずに他の動作を挿入します。
一貫性のある API パターン
SDK では、さまざまなプラットフォームと言語で一貫したパターンが提供されるため、チーム メンバー間やプロジェクト間で知識を簡単に共有できます。
生の HTTP 呼び出しで見落とされるもの
Microsoft Graph に対して生の HTTP 呼び出しを行う場合は、いくつかの重要な機能を自分で実装する必要があります。
手動再試行ロジックの実装
SDK を使用しない場合は、次のような 429 responsesを処理するための再試行ロジックを実装する必要があります。
-
Retry-Afterヘッダー値の解析 - 指数バックオフの実装
- さまざまなエラー シナリオの処理
- 負荷の高い再試行の嵐を回避する
手動でのページネーション処理
以下を実行する必要があります。
- すべての応答を
@odata.nextLinkについてチェックする - 各ページに対してさらに要求を行う
- ページ間で結果を集計する
- ページネーション中の部分的なエラーを処理する
エラー処理の定型句
Microsoft Graph は、構造が異なるさまざまなエラー応答を返すことができます。 SDK を使用しない場合は、次の手順を実行する必要があります。
- エラー応答ボディをパースする
- さまざまな HTTP 状態コードを適切に処理する
- ログ記録のために意味のあるエラー メッセージを抽出する
- 予期しないエラーのフォールバック動作を実装する
認証の複雑さ
認証を手動で管理するには、次のものが必要です。
- OAuth 2.0 フローの実装
- トークンの格納とセキュリティ保護
- 有効期限前のトークン更新の処理
- さまざまな認証シナリオの管理 (委任されたアクセス許可とアプリケーションのアクセス許可)
使用可能な SDK
Microsoft では、次のプラットフォーム用の公式 SDK を提供しています。
| Platform | SDK | Documentation |
|---|---|---|
| .NET | Microsoft.Graph | .NET SDK のドキュメント |
| JavaScript/TypeScript | @microsoft/microsoft-graph-client | JavaScript SDK のドキュメント |
| Java | microsoft-graph | Java SDK のドキュメント |
| Python | msgraph-sdk-python | Python SDK のドキュメント |
| Go | msgraph-sdk-go | Go SDK のドキュメント |
| PHP | microsoft-graph | PHP SDK のドキュメント |
| PowerShell | Microsoft.Graph | PowerShell SDK のドキュメント |
SDK の使用に代わる方法
SDK はほとんどのシナリオで推奨されますが、他のアプローチの方が適している場合があります。
Kiota で生成されたクライアント
アプリケーションで Microsoft Graph API のごく一部のみを使用する場合は、完全な SDK を使用するのではなく、 Kiota を 使用してクライアントを生成することを検討してください。 Kiota は、必要な特定の API に合わせて調整された、軽量で厳密に型指定されたクライアントを生成し、型の安全性と要求の構築を提供しながら、依存関係のフットプリントを減らします。
最小限の API の使用
少数の API 呼び出しのみを行うクイック スクリプトまたはツールを記述する場合、SDK を設定するオーバーヘッドが正当化されない可能性があります。 このような場合は、直接 HTTP 呼び出しが簡単になる可能性があります。 ただし、 認証 と エラー応答 を自分で処理する必要があります。単純なスクリプトでも複雑さがすぐに増える可能性があります。
サポートされていない言語
公式の SDK を持たないプログラミング言語を使用している場合は、直接 HTTP 呼び出しを行う必要があります。 Kiota でサポートされている場合は、Kiota を使用して言語の クライアントを生成 することも検討してください。
SDK で特定の機能がまだサポートされていない場合
Microsoft Graph では、新しい機能が継続的に追加されます。 場合によっては、新しい API または機能にすぐに SDK に fluent API が含まれていない場合があります。 ほとんどの場合、SDK を使用して パス文字列を使用して任意の要求を行うことができます。これは、型指定された要求ビルダーを必要とせずに SDK のミドルウェア (認証、再試行、ログ記録) の利点を提供します。 SDK が要求をまったくサポートしていない場合は、SDK のサポートが追加されるまで、直接 HTTP 呼び出しにフォールバックできます。
パフォーマンスに依存する環境
コールド スタート時間とパッケージ サイズが重要なサーバーレス関数やエッジ コンピューティングなどのシナリオでは、Kiota で生成されたクライアントまたは直接 HTTP 呼び出しを使用するより軽いアプローチが適している可能性があります。
次のステップ
Microsoft Graph SDK を使用するようにアプリケーションを更新する方法について説明します。
関連するコンテンツ
Dev Proxy