Microsoft Graph Developer Proxy - MS Graph APIをローカルでテストするためのプロキシ
(github.com/microsoftgraph)Microsoft 365のクラウドサービスに関連するアプリケーションを開発・保守する人にとって、どうしても避けて通れないのが Microsoft Graph API です。念のため簡単に紹介すると、MSが提供するあらゆるクラウドリソースへ統合的にアクセスできるRESTful APIです。MSはこのAPIを便利に利用するための Graph SDK をいくつかの言語向けに提供しています。
問題は、このAPIを使う部分のテストがかなり厄介だったことです。私が特にそれを感じたのは、Graph APIでrate limitに引っかかり、レスポンスが 429 Too Many Requests になるケースでした。Graph SDKを使うと、throttlingによって 429 レスポンスコードを受け取った際、レスポンスヘッダーの Retry-After 値に従って自動で再試行してくれますが、場合によっては再試行せずに素早く失敗として処理したり、あるいはデフォルトとは異なるポリシーを適用したほうがよいこともありました。問題は、こうしたケースを開発環境でテストする適切な方法がなかったため、最初の製品をリリースしたあとになってようやく、Graph SDKのリクエスト再試行ポリシーをデフォルトから変更すべきだったと気づき、後続バージョンで修正した経験があることです。
MSもこの点をある程度認識しており、APIリクエストURLに test429=true パラメータを追加すると 429 レスポンスコードのケースをモックできる機能を追加しましたが、これはSharePoint/OneDrive関連エンドポイントでしか動作しないという制約がありました。
https://pnp.github.io/blog/post/…
そんな中で、年明け早々に待望のツールが登場しました。それが Microsoft Graph Developer Proxy です。
Graph APIが返すさまざまなレスポンス値をモックでき、各種エラーやthrottlingも手軽に再現できるツールです。テスト対象のリクエストがローカル開発環境の外に出ないのも嬉しい点です。まだ開発初期段階ですが、今年中に正式版がリリースされる見込みとのことです。少なくとも関連業務に携わる人にとっては、本当に便利なツールの登場ですね。
1件のコメント
ちなみに、このツールが出る前でも、Graph API で
429が発生する状況をまったく再現できなかったわけではありません。Fiddler のようなツールを使う方法はありました。ただ、かなり不便でした。上で紹介したツールは、README によると昨年(2022年)のハッカソン大会で Waldek Mastykarz 氏が作成したものですが、その方の以前(2018年)のブログ記事を見ると、Fiddler で SharePoint API で
429が発生する状況を模擬する方法が紹介されています。https://blog.mastykarz.nl/simulating-throttling-sharepoint/