以前、Microsoftが提供しているMicrosoft Graphを使った開発を行っていたのですが、詳細な条件を付与するためにクエリパラメータで記述するのですが、類を見ない書き方だったので記事に残しておきます。
開発したこと
弊社では新卒向けダイレクトリクルーティングのサービスを展開しております。その中で、企業と学生が面談を行うための日程調整機能を提供しているのですが、外部のカレンダーサービスを弊社サービスと連携し、学生への日程を自動で行うための機能開発を行っていました。(ちゃっかり宣伝)
まず、連携してもらったGoogleカレンダーに対してのAPIエンドポイントです
# クエリ部分に注目してもらいたいのでわざと改行してます
GET https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events
?timeMin=xxx&timeMax=xxx
これは指定した timeMin(datetime)
から timeMax(datetime)
までの期間に存在する予定を全て取得するものになります。普通のエンドポイントの書き方かなと思います。
続いてOutlookカレンダーに対してのAPIエンドポイントです
GET https://graph.microsoft.com/v1.0/me/events?
$filter=start/dateTime ge 'xxx(datetime)' and end/dateTime le 'datetime'
見やすくするためにあえてクエリをデコード状態で表示しておりますが、実際にクエリを使用する際は、HTML5で定義されている application/x-www-form-urlencoded
形式の文字列へエンコードしてください。
まずキーには $filter
というドルマークから始まり、その後スペース区切りで指定するキーとそれに対する値を入力する形となっております。
ge
と le
は、比較演算子の省略語?みたいなものです。詳しくは 比較演算子 le ge
とかで調べてみてください。
さらに、値にはシンクルクォーテーションを使う必要があり、初めてドキュメントを見た際は「本当にこの書き方で大丈夫なんか…?」とびくびくしてました。
詳しいお話は公式のドキュメントに書いてあるので参考にしてみてください。