FileMaker Cloud 2.18 OData ガイド
FileMaker データベースでの OData の使用について
概要
OData (Open Data Protocol) は、標準化された方法を使用してデータのクエリーおよび更新ができるようになる業界標準の API プロトコルです。REST API クライアントが FileMaker Cloud® で共有されている FileMaker® データにアクセスできるようになります。OData は REST (Representational State Transfer) アーキテクチャに準拠する REST API です。OData は Excel などのサードパーティ製アプリケーションで FileMaker データにアクセスするための標準化された方法を提供するという点で ODBC (Open Database Connectivity) や JDBC (Java Database Connectivity) と似ています。OData 4.0 Protocol (英語) を参照してください。
また、OData は JSON (JavaScript Object Notation) および Atom (Atom Syndication Format) のデータを返します。JSON は軽量で人間が読み取れるため、REST API で一般的に使用されるテキスト形式です。Atom は Web リソースの作成および更新に使用する XML 形式で、JSON ではなく XML 構造化データを使用するアプリケーション用にサポートされています。
このガイドでは、次の経験があることを想定しています:
- FileMaker Pro Advanced を使用したデータベースの作成。FileMaker Pro Advanced データベースの設計の基礎、フィールド、テーブル、リレーションシップ、およびオブジェクトの概念について理解している必要があります。FileMaker Pro Advanced ヘルプを参照してください。
- FileMaker Cloud を使用したデータベースの共有。FileMaker Cloud の設定方法、共有データベースへのアクセスを有効にする方法、および FileMaker Cloud Admin Console を使用して共有データベースを監視する方法について理解している必要があります。プロダクトドキュメンテーションセンターで FileMaker Cloud のマニュアルを参照してください。
- POST、GET、PATCH、および DELETE メソッドを呼び出すサーバーサイドアプリケーションまたは Web サービスでの REST API の使用。
FileMaker データベースで OData を使用する一般的な手順
- FileMaker Pro Advanced を使用して OData アクセス用の FileMaker データベースを準備します。「OData アクセスの有効化」を参照してください。
- レコードを検索、変更、FileMaker スクリプトを実行、および共有データベースのスキーマを変更するための OData メソッドを呼び出すコードを作成します。「OData API 呼び出しの作成」を参照してください。
- OData アクセスを有効にした FileMaker Cloud を使用して FileMaker データベースを共有します。「OData アクセス用のデータベースの共有」を参照してください。
- OData アクセスが正しく動作することを確認するためにテストします。「OData アクセスのテスト」を参照してください。
- FileMaker Cloud Admin Console を使用して共有データベースを監視します。「OData アクセスの監視」を参照してください。
OData 呼び出しの処理の流れ
- REST API クライアントは HTTPS ポート (ポート 443) を使用して Web サーバーに OData 呼び出し (HTTPS リクエスト) を送信します。
- Web サーバーは FileMaker Web サーバーモジュールを使用してリクエストを FileMaker OData Listener にルーティングします。
- OData Listener は HTTPS リクエスト (URL と JSON または Atom データ) をデータベースサーバーコンポーネントが理解できる形式に変換して、データベースサーバーで共有されているデータベースのデータを要求します。
- データベースサーバーは要求された FileMaker データを OData Listener に返します。
- OData Listener は FileMaker データを HTTPS 応答 (URL と JSON または Atom データ) に変換して Web サーバーにデータを渡すことで呼び出しに応答します。
- Web サーバーは要求元の REST API クライアントに HTTPS 応答を送信します。
API ソリューションの比較
FileMaker プラットフォームでは、共有されている FileMaker データベースのデータにアクセスするために 2 種類の REST API を使用できます。ビジネスの目的および環境に適したソリューションを選択してください。
ソリューション | 使用する環境 | 利点 |
---|---|---|
OData 規格 |
|
|
FileMaker Data API |
|
|
OData および FileMaker の用語
このガイドでは該当する部分では FileMaker の用語を使用しています。ただし、わかりやすくするために FileMaker の用語に加えて OData の用語を使用する場合もあります。次の表は、対応する用語および定義を示します。
FileMaker の用語の情報については、プロダクトドキュメンテーションセンターを参照してください。
OData の用語 | FileMaker の用語 |
---|---|
entity | レコード |
entity set | テーブル |
entity container | データベース名や URL などのレコードに限定されないフィールドのグループ |
collection of entity containers | フィールドのグループの一覧 (例: データベース名の一覧) |
property | フィールド |
path segment | URL 内の 2 つのスラッシュ文字の間にある値 |
raw value | バイナリ値。人間が読み取れるように構造化された JSON または Atom の値ではなくバイト列の状態の値 |
OData アクセス用のデータベースの準備
OData アクセスの有効化
FileMaker データへの OData アクセスを許可するには、FileMaker Pro Advanced で fmodata 拡張アクセス権を有効にする必要があります。fmodata 拡張アクセス権を有効にしない場合、データベースが共有されていても OData アプリケーションは OData 呼び出しを使用してデータベースにアクセスできません。
メモ: セキュリティ上の理由から、OData を使用したアクセスを許可するアカウントのアクセス権セットでのみ fmodata 拡張アクセス権を有効にします。
FileMaker Pro Advanced ヘルプの「アクセス権セットの拡張アクセス権の編集」を参照してください。
OData 規格の準拠および機能のサポート
サポートされている OData の機能
OData は既存の規格 (REST、JSON、XML、Atom) で動作する方法を使用して一般的な機能を表現することができます。いくつかの例外を除き、FileMaker プラットフォームでは中級の準拠レベルで OData をサポートしています。OData 4.0 Protocol (英語) の仕様およびリファレンスガイドを参照してください。
OData API を使用して次の操作を行うことができます:
- 共有データベース名およびテーブル名、データベースのメタデータなどの FileMaker Cloud に関する情報の取得。「データベースの構造およびメタデータ」を参照してください。
- レコードの作成、編集、または削除。「データの変更」を参照してください。
- レコードの検索またはすべてのレコードの検索。「データの要求」を参照してください。
- 対象レコードを検索する条件の指定。「クエリーオプション」を参照してください。
- FileMaker スクリプトの実行。「スクリプトの実行」を参照してください。
- オブジェクトデータのアップロード。「オブジェクトデータの操作」を参照してください。
サポートされていない OData の機能
中級の準拠レベルのうち、次の OData の機能はサポートされていません:
$search
クエリーオプション$expand
($crossjoin
処理の一部としてのみサポートされます)lambda
演算子のany
およびall
- 展開されているエンティティの
$filter
ビルトイン標準関数および演算子:
- indexof()
- fractionalseconds()
- isof()
- geo.distance()
- geo.length()
- geo.intersects()
また、次の処理はサポートされていません:
- 外部 ODBC データソースのデータへのアクセス
- FileMaker プラグインの使用
- ユーザインタラクションによるスクリプトトリガのアクティブ化。OData でスクリプトトリガをアクティブにするには、FileMaker スクリプトを実行する必要があります。
- サーバーマシンのファイルシステムへのアクセス。たとえば、OData では Get (テンポラリパス) 関数はサポートされません。
OData リファレンス情報
次の API リファレンスで OData の仕様が提供されています:
URL およびデータ形式に関する注意点
- URL の最大長は、オペレーティングシステム、Web サーバー、および Web ブラウザにより異なります。クロスプラットフォームでの最適な使用には、URL の長さを 2000 文字までにします。
- URL 内の文字列は HTTP リクエストの標準である URL エンコーディングを使用する必要があります。これはパーセントエンコーディングとも呼ばれます。
- リクエストのボディで引数に指定する文字列データの値は UTF-8 エンコードを使用する必要があります。
FileMaker スクリプトおよび OData
FileMaker スクリプトとは、スクリプトステップのセットに名前を付けたものです。頻繁に実行するタスクの自動化や複数のタスクの組み合わせを実行することができます。OData とともに FileMaker スクリプトを使用すると、Web サービスでより多くのタスクや一連のタスクを実行できます。「スクリプトの実行」を参照してください。
メモ
- アカウントとアクセス権を使用して Web サービスで実行できるスクリプトのセットを制限します。Web 互換のスクリプトステップのみがスクリプトに含まれることを確認して、Web サービスから使用する必要があるスクリプトのみを利用できるようにします。
- アクセス権により制御されるスクリプトステップを組み合わせて実行する際は、そのスクリプトに対する影響を考慮する必要があります。たとえば、スクリプトにレコードを削除するスクリプトステップが含まれ、レコード削除が許可されているアカウントで Web サービスにログインしていない場合、このスクリプトではレコードを削除するスクリプトステップは実行されません。ただし、スクリプト自体の実行は停止しないことがあるため、予期しない結果になる可能性があります。
- スクリプトワークスペースで [完全アクセス] アクセス権セットをスクリプトに付与すると、個人ユーザには許可しないタスクをスクリプトで実行できるようになります。たとえば、ユーザのアカウントとアクセス権ではレコードを削除できないようにする一方で、スクリプト内で定義された条件下で特定のレコードを削除するスクリプトの実行を許可することができます。
- データをサーバーに保存するまではデータの変更ができないため、データを変更するスクリプトには [レコード/検索条件確定] スクリプトステップを含める必要があります。これには、[切り取り]、[コピー]、[貼り付け] などのスクリプトステップが含まれます。それぞれの単一の処理は [レコード/検索条件確定] スクリプトステップを含むスクリプトに変換してください。Web サービスで実行されるスクリプトを設計する際は、スクリプトの最後に [レコード/検索条件確定] スクリプトステップを含めて変更がすべて保存されるようにします。
- Web ユーザが実行する可能性のある各スクリプトを開いて、OData アクセス用にデータベースを共有する場合にスクリプトが適切に実行されることを確認します。上記の説明のとおり、OData でサポートされているスクリプトステップのみがスクリプトで使用されていることを確認します。
OData API 呼び出しの作成
OData 呼び出しのコンポーネント
OData 呼び出しは次のコンポーネントで構成されます。
コンポーネント | 説明 |
---|---|
HTTP メソッド | OData は次の HTTP メソッドを使用します:
|
HTTP ヘッダ | OData は次のヘッダを使用します:
|
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名> <ホスト> – FileMaker Cloud ホスト名 例: |
JSON および Atom の引数データの例 | POST および PATCH メソッドのみ。 |
FileMaker ホストへの認証された接続の作成
OData では FileMaker ID アカウントを使用して認証する必要があります。
FileMaker ホストへの接続を定義するには、次の操作を行います:
- 外部認証用の FileMaker ID トークンを生成します。FileMaker Customer Console ヘルプを参照してください。
- すべての OData 呼び出しの Authorization ヘッダに手順 1 で生成した FileMaker ID トークンを含めます。
たとえば、次の URL およびヘッダを使用します:
- URL:
https://<ホスト>/fmi/odata/v4/<データベース名>/$metadata
<ホスト> – FileMaker Cloud ホスト名
<データベース名> – FileMaker データベースの名前 - ヘッダ:
Authorization FMID FileMaker_ID_Token
- URL:
データベースの構造およびメタデータ
共有データベースおよびその構造に関する情報は HTTP GET メソッドを実行することで取得できます。
データベース名の取得
データベース名の一覧を取得するには、URL にデータベース名を指定せずに GET メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン> <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
- OData ではデータベース名および対応するエンドポイント URL の一覧が返されます。
テーブルの一覧の取得
データベース内のテーブルの一覧を取得するには、URL にデータベース名を追加して HTTP GET メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名> <ホスト> – FileMaker Cloud ホスト名 例: |
メタデータの取得
テーブルのメタデータ情報を要求するには、HTTP GET メソッドを使用します。
データベースのすべてのメタデータの一覧を要求するには、$metadata
キーワードをデータベースサービスのルートで使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/$metadata <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
データベースの FileMaker テーブルに関する情報を提供するために、FileMaker 製品バージョン番号などのアノテーション (OData 規格で定義されていない情報) が結果のメタデータに追加されます。
次のアノテーションには論理値が含まれ、該当する場合は true になります。それ以外の場合、論理値は false になります。
- AutoGenerated: FileMaker Pro Advanced によりフィールド値が自動的に生成されるかどうか
- Index: フィールド値に索引が設定されるかどうか
- VersionID: フィールドがタイムスタンプフィールドで、レコードが変更されたときに新しいタイムスタンプ値が生成されるかどうか
- Global: フィールドにグローバル値が含まれるかどうか
- Calculation: フィールドが計算タイプかどうか
- Summary: フィールドが集計タイプかどうか
他のアノテーション:
- MaxRepetitions: 繰り返しフィールドに定義された最大繰り返し数を示す整数値。このアノテーションがないフィールドは繰り返しフィールドではありません。
- ExternalSecurePath: オブジェクトフィールドのセキュア格納に指定された相対パスを示す文字列
- BestRowID: 常に ROWID を含むシステムフィールド。
$select=ROWID
を指定することで結果セットに明示的に含めることができます。結果セットの値はレコードに Get (レコード ID) 関数を使用した場合と同じです。 - RowVersion: 常に ROWMODID を含むシステムフィールド。
$select=ROWMODID
を指定することで結果セットに明示的に含めることができます。結果セットの値はレコードに Get (レコード編集回数) 関数を使用した場合と同じです。
重要: OData を使用する場合、各テーブルで主キーを定義する必要があります。OData では主キーにユニークな値が必要な、空欄不可のフィールドを使用します。そのため、テーブルにそのようなフィールドが定義されていない場合、主キーとして ROWID システムフィールドが使用されます。ROWID システムフィールドにはレコードの Get (レコード ID) 関数と同じ値が含まれます。
データの変更
OData ではアカウントに割り当てられたアクセス権に基づいてレコードの作成、更新、および削除の処理をサポートします。
レコードの作成
テーブルにレコードを作成するには、POST メソッドを使用します。POST のボディには 1 つのレコードのデータが JSON 形式で含まれている必要があります。
コンポーネント | 説明 |
---|---|
HTTP メソッド | POST |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | JSON の例: { Atom の例: |
FileMaker 情報
- 繰り返しフィールドの個々の繰り返しの値を渡すには、繰り返し数を角カッコで囲んで指定します (例:
名前[4]
)。 - JSON 形式の空のデータオブジェクトを含むレコードを作成する場合、null 値を使用できるフィールドが少なくとも 1 つ必要です。
- FileMaker グローバルフィールドは読み取り専用のため、OData で更新することはできません。
レコードの削除
レコードを削除するには、URL にレコードのテーブル名および主キーの値を指定して HTTP DELETE メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | DELETE |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>) <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
$filter
条件を指定すると複数のレコードを削除できます。
レコードの更新
レコードを更新するには、HTTP PATCH メソッドを使用して更新するレコードを URL で指定します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | PATCH |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>) <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | JSON の例: { |
FileMaker 情報
- オブジェクトの値を更新するには、「イメージまたは PDF のオブジェクトフィールドを持つレコードの更新」で説明するように Base64 エンコード値、または「イメージまたは PDF のオブジェクトフィールドを持つレコードのバイナリデータによる更新」で説明するようにバイナリデータを渡します。
- 繰り返しフィールドの個々の繰り返しの値を渡すには、繰り返し数を角カッコで囲んで指定します (例:
名前[4]
)。レコードを更新する場合、オブジェクトフィールドの繰り返しの指定はサポートされません。 $filter
条件を指定すると複数のレコードを更新できます。
オブジェクトデータの操作
HTTP POST または PATCH メソッドを送信してピクチャまたは PDF ファイルをオブジェクトフィールドに挿入することができます。オブジェクトフィールド内のデータは、フィールドに埋め込むか、ファイル参照で保存するか、または外部に保存されます。
イメージまたは PDF のオブジェクトフィールドを持つレコードの作成
1 つ以上のオブジェクトフィールドを持つテーブルにレコードを作成するには、Base64 エンコードデータを持つフィールドを設定します。GIF、PNG、JPEG、TIFF、および PDF のファイルタイプのみサポートされます。POST のボディには有効なレコード表現が 1 つ含まれている必要があります。
コンポーネント | 説明 |
---|---|
HTTP メソッド | POST |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | JSON の例: { |
FileMaker 情報
- Base64 エンコードのオブジェクト値のメディアタイプは、データの 1 バイト目をサポートされているメディアタイプの適切な値と比較することで判定されます。
イメージまたは PDF のオブジェクトフィールドを持つレコードのバイナリデータによる更新
この表のリクエストでは「連絡先」レコードの「写真」フィールドの値を PATCH メソッドを使用して更新します。リクエストのボディには構造化されていないバイナリの GIF バイト列を使用します。Content-Type ヘッダにボディに含まれるデータのタイプ (image/gif、image/png、image/jpeg、image/tiff、または application/pdf) を指定する必要があります。
コンポーネント | 説明 |
---|---|
HTTP メソッド | PATCH |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>)/<フィールド名> <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | "474946383961090009008001007F7F7FFFFFFF21F90401000001002C00000000090009 |
イメージまたは PDF のオブジェクトフィールドを持つレコードの更新
レコードのオブジェクトフィールドの値を更新するには、HTTP PATCH メソッドを使用して Base64 エンコード値を渡します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | PATCH |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>) <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | JSON の例: { |
データの要求
テーブルのレコードの要求
FileMaker データベースからレコードのコレクションを返すには、URL にテーブル名を含めて HTTP GET メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
- すべてのレコードまたは 1 つのレコードを取得する場合、応答結果にオブジェクトフィールドは含まれません。オブジェクトフィールドの値の要求に関する情報については、「個々のフィールド値の要求」を参照してください。
個々のレコードの要求
データベーステーブル内の個々のレコードを要求するには、データベース名、テーブル名、およびレコードの主キーの値を指定します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>) <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
- URL で指定する主キーの値は、主キーとして指定されたフィールド、または主キーが指定されていない場合は ROWID システムフィールドです。「メタデータの取得」を参照してください。繰り返しフィールドには最初の繰り返しの値が含まれます。個々の繰り返しの値の取得については、「個々のフィールド値の要求」を参照してください。
個々のフィールド値の要求
個々のフィールド値を要求するには、テーブル名、レコードの主キーの値、およびフィールド名を指定します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>)/<フィールド名> <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
- URL で個々の繰り返しの値を要求する場合に角カッコ ([ ]) を使用して繰り返し数を指定する方法はサポートされていません。
- 繰り返しフィールドがオブジェクトフィールドの場合、最初の繰り返しの値のみが返されます。それ以外の場合、すべての繰り返しの値が返されます。
個々のフィールドのバイナリ値の要求
バイナリ値として保存されている個々のフィールドを要求するには、$value
クエリーオプションを使用します。
FileMaker フィールドのバイナリ値のデフォルトの形式は text/plain です。オブジェクトフィールドの場合、デフォルトの形式はオブジェクトフィールドのタイプにより異なります。デフォルトの形式には image/gif、image/png、image/jpeg、image/tiff、application/pdf、または application/octet-stream があります。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>)/<フィールド名>/$value <ホスト> – FileMaker Cloud ホスト名 例: 上記のリクエストでは「連絡先」レコードの「名前」フィールドのバイナリ値が返されます。 |
FileMaker 情報
- 繰り返しフィールドのバイナリ値 (raw value) を要求する場合、最初の繰り返しのバイナリ値 (raw value) のみが返されます。
関連テーブルの参照
各リレーションシップの照合フィールドを指定せずに FileMaker テーブル間のリレーションシップを参照することができます。すべての処理および結果は URL の最後のテーブルに関連付けられます。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名> (<主キーの値>)/<関連テーブル> <ホスト> – FileMaker Cloud ホスト名 例: 上記のリクエストでは特定の ID を持つ顧客が購入したすべての製品が返されます。 |
FileMaker 情報
$filter
クエリーオプションを使用する場合、式のフィールド名の前にテーブル名を付けると、フィールド名が明確になります ($filter=購入/ID eq 7
など)。
非関連テーブルのクロス結合の要求
非関連テーブルのクロス結合を要求するには、$crossjoin
キーワードを使用して結合するテーブルを順番に指定します。$filter
クエリーオプションを使用する場合、2 つのテーブルの結合に使用するフィールドをそれぞれ指定します。
デフォルトの動作ではレコード ID の一覧が返されますが、データフィールドが返されるようにするには、$expand
クエリーオプションおよび $select
クエリーオプションを使用します。OData 4.0 URL Conventions (英語) の「Addressing the cross join of entity sets」を参照してください。
メモ: $expand
キーワードはクロス結合の場合のみサポートされています。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/$crossjoin (<テーブル 1>, <テーブル 2>)?$filter= <ホスト> – FileMaker Cloud ホスト名 例: |
クエリーオプション
OData ではデータをクエリーするさまざまなクエリーオプションがサポートされています。
クエリーオプション $filter
$filter
クエリーオプションを使用してレコードをフィルタします。コレクションの各レコードに対して $filter
で指定された式が評価され、式の値が true の項目のみが応答に含まれます。
OData では $filter
の処理の中で使用されるビルトインの演算子および関数のセットがサポートされています。使用できる演算子およびビルトイン関数に関する情報については、OData 4.0 Protocol (英語) を参照してください。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名>?$filter=(<式>) <ホスト> – FileMaker Cloud ホスト名 例: 上記のリクエストでは GET メソッドと |
FileMaker 情報
次のビルトイン関数はサポートされていません:
- indexof()
- isof()
- geo.distance()
- geo.length()
- geo.intersects()
- fractionalseconds()
- 日付、時刻、およびタイムスタンプの書式は ISO 8601 に準拠しています。タイムゾーンオフセットはサーバーのタイムゾーンと相対します。
- スペースやアンダースコアなどの特殊文字を含むフィールド名はダブルクオーテーションマークで囲みます。
クエリーオプション $orderby
$orderby
クエリーオプションを使用してレコードを昇順または降順で表示するように要求します。順序を指定しない場合、デフォルトの順序は昇順です。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名>?$orderby=<フィールド名> {asc/desc} <ホスト> – FileMaker Cloud ホスト名 例: 上記のリクエストでは「会社」フィールドを基準に降順で「連絡先」レコードがソートされます。 |
FileMaker 情報
- スペースやアンダースコアなどの特殊文字を含むフィールド名はダブルクオーテーションマークで囲みます。
$orderby
クエリーオプションでは OData のビルトイン関数はサポートされていません。
クエリーオプション $top および $skip
$top
および $skip
クエリーオプションを使用して結果セットの量を調整します。これらのクエリーオプションは応答に含めるレコードに合わせて単独または同時に使用できます。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名>{?$top/?$skip}=<数字> <ホスト> – FileMaker Cloud ホスト名 クエリーオプション {?$top/?$skip} – 例:
|
クエリーオプション $count
値を true に設定して$count
クエリーオプションを使用すると、レコードとともに一致したレコードの数を応答で返すように要求できます。$count
クエリーオプションでは $top
または $skip
クエリーオプションは無視されます。$filter
を指定した場合、条件に一致する結果を含むすべてのレコードの総数を返します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名>?$count=true <ホスト> – FileMaker Cloud ホスト名 例: |
クエリーオプション $select
$select
クエリーオプションを使用して各テーブルの部分的なフィールドのセットを要求します。デフォルトでは、オブジェクトフィールド以外のすべてのフィールドを返します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | GET |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/<テーブル名>?$select=<フィールド 1>, <フィールド 2> <ホスト> – FileMaker Cloud ホスト名 例: 上記のリクエストでは「連絡先」テーブルのすべてのレコードの「会社」および「Web サイト」のデータが返されます。 |
FileMaker 情報
- ROWID および ROWMODID システムフィールドを
$select
クエリーオプションで指定することで、これらのフィールドを結果セットに含めることができます。例:$select=ROWID, ROWMODID.
- ROWID は Get (レコード ID) 関数、ROWMODID は Get (レコード編集回数) 関数が返す値と同じです。
スキーマの変更
OData では作成および削除の処理がサポートされているため、アカウントに定義されたアクセス権に基づいてテーブルや索引を作成および削除することができます。
テーブルの作成
新しいテーブルを作成するには、HTTP POST メソッドを使用します。POST のボディにはテーブル名である識別子を含む有効なテーブル表現が 1 つ含まれている必要があります。
コンポーネント | 説明 |
---|---|
HTTP メソッド | POST |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/FileMaker_Tables <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | JSON の例: { "tableName": "会社", "fields": [ { "name": "会社 ID", "type": "int", "primary": true }, { "name": "ユーザ ID", "type": "varchar(20)", "unique": true, "default": "CURRENT_USER" }, { "name": "会社名", "type": "varchar(100)", "nullable": false }, { "name": "メモ", "type": "varchar(2000)", "global": true }, { "name": "署名済みの契約", "type": "blob", "externalSecurePath": "ファイル/連絡先管理/" } ] } Atom の例: <TableDefinition tableName="会社"> <FieldDefinition name="会社 ID" type="int" primary="true"/> <FieldDefinition name="ユーザ ID" type="varchar(20)"unique="true" default="CURRENT_USER"/> <FieldDefinition name="会社名" type="varchar(100)" nullable="false"/> <FieldDefinition name="メモ" type="varchar(2000) global="true"/> </TableDefinition> |
FileMaker 情報
- FileMaker_Tables はテーブルを作成、変更、および削除するために使用するシステムテーブルです。
type
引数の型は NUMERIC、DECIMAL、INT、DATE、TIME、TIMESTAMP、VARCHAR、CHARACTER VARYING、BLOB、VARBINARY、LONGVARBINARY、または BINARY VARYING のいずれかです。 - 繰り返しの値は型の後のカッコ内に指定します (例:
"INT[4]"
)。テキストフィールドの長さの最大値をカッコで指定できます (例:"VARCHAR(200)"
)。 フィールド名およびフィールドタイプとともに次のオプション引数を使用できます:
"primary"
: true または false。フィールドが主キーかどうかを指定します。デフォルトは false です。"unique"
: true または false。フィールドの値をユニークな値にする必要があるかどうかを指定します。デフォルトは false です。"nullable"
: true または false。フィールドが空欄不可かどうかを指定します。デフォルトは true です。"global"
: true または false。フィールドがグローバルフィールドかどうかを指定します。デフォルトは false です。"default"
: データタイプに適したキーワードを含む文字列。有効なキーワードは USER、USERNAME、CURRENT_USER、CURRENT_DATE、CURDATE、CURRENT_TIME、CURTIME、CURRENT_TIMESTAMP、および CURTIMESTAMP です。"externalSecurePath"
(オブジェクトフィールドのみ): "externalSecurePath" のセキュアなファイルへの相対パスを含む文字列。基本ディレクトリの「[データベースの場所]/」の部分は除外します。FileMaker Pro Advanced で各 FileMaker データベースがこのように設定されていることを確認してください。FileMaker Pro Advanced ヘルプを参照してください。
テーブルへのフィールドの追加
既存のテーブルに新しいフィールドを作成するには、URL で FileMaker_Tables システムテーブルの後にテーブル名を指定して PATCH リクエストを送信します。PATCH ボディにはテーブルに追加するフィールドの配列を含める必要があります。
フィールドを追加する際にエラーでリクエストが失敗した場合でも、他のフィールドはテーブルに追加されます。
コンポーネント | 説明 |
---|---|
HTTP メソッド | PATCH |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/FileMaker_Tables/<テーブル名> <ホスト> – FileMaker Cloud ホスト名 例: 上記のリクエストでは「会社」テーブルに「電話」という名前のフィールドを作成します。 |
引数 | JSON の例: { "fields": [ { "name": "電話", "type": "varchar(25)" } ] } Atom の例: <TableDefinition tableName="会社"> <FieldDefinition name="電話" type="varchar(25)"/> </TableDefinition>
|
FileMaker 情報
- FileMaker_Tables はテーブルを作成、変更、および削除するために使用するシステムテーブルです。有効なオプションについては、「テーブルの作成」を参照してください。
テーブルの削除
テーブルとそのすべてのレコードを削除するには、URL にテーブル名を指定して HTTP DELETE メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | DELETE |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/FileMaker_Tables/<テーブル名> <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
- FileMaker_Tables はテーブルを作成、変更、および削除するために使用するシステムテーブルです。
- この処理では確認をせずにテーブルとその中のすべてのデータを削除します。誤ってデータが失われることを防ぐには、テーブルを削除するアクセス権を付与されたアカウントを作成して、この削除処理をするためにのみ使用します。
テーブルからのフィールドの削除
テーブルからフィールドを削除するには、URL でテーブル名の後にフィールド名を追加して HTTP DELETE メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | DELETE |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/FileMaker_Tables/<テーブル名>/<フィールド名> <ホスト> – FileMaker Cloud ホスト名 例: |
フィールド索引の作成
新しい索引を作成するには、FileMaker_Indexes システムテーブルの後にテーブル名を指定して POST リクエストを送信します。POST のボディにはフィールド名である識別子を含む有効な索引表現が 1 つ含まれている必要があります。
コンポーネント | 説明 |
---|---|
HTTP メソッド | POST |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/FileMaker_Indexes/<テーブル名> <ホスト> – FileMaker Cloud ホスト名 例: |
引数 | JSON の例: { Atom の例: <IndexDefinition indexName="都道府県"/> |
FileMaker 情報
- FileMaker_Indexes は索引を作成および削除するために使用するシステムテーブルです。
索引の削除
索引を削除するには、URL で FileMaker_Indexes システムテーブルの後にテーブル名およびフィールド名を指定して HTTP DELETE リクエストを送信します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | DELETE |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/FileMaker_Indexes/<テーブル名>/<フィールド名> <ホスト> – FileMaker Cloud ホスト名 例: |
FileMaker 情報
- FileMaker_Indexes はフィールドの索引を作成および削除するために使用するシステムテーブルです。
- 索引を削除するには、URL でテーブル名の後にフィールド名を指定する必要があります。
スクリプトの実行
スクリプトを実行するには、URL で Script システムテーブルの後にスクリプトの名前を指定して POST リクエストを送信します。スクリプトに引数を渡さない場合、POST のボディを完全に空にする必要があります。スクリプトに引数を渡す場合、「scriptParameterValue」という名前のフィールドを 1 つ含める必要があります。「scriptParameterValue」には文字列、数字、および JSON オブジェクト型の値を使用できます。
OData では特殊文字 (例: @、&、/) を含むスクリプト名または数字で始まる名前はサポートされていません。スクリプトに [現在のスクリプト終了] スクリプトステップが含まれる場合、[現在のスクリプト終了] のテキスト結果が結果の「resultParameter」という名前のフィールドに返されます。
「HelloScript」は文字列「Hello」に引数の値を追加して結果を返すスクリプトです。OData では Content-Type が「application/json」の応答のボディで結果が返されます。
{
"scriptResult":
{
"code": 0,
"resultParameter": "Hello World"
}
}
メモ: OData ではユーザインタラクションなしで実行されるスクリプトのみがサポートされています。
スクリプトの実行
スクリプトを実行するには、HTTP POST メソッドを使用します。
コンポーネント | 説明 |
---|---|
HTTP メソッド | POST |
URL | https://<ホスト>/fmi/odata/<バージョン>/<データベース名>/Script.<スクリプト名> <ホスト> – FileMaker Cloud ホスト名 例: World 」を引数の値として「HelloScript」スクリプトを実行します。 |
引数 | JSON の例: |
FileMaker 情報
- すべてのスクリプトは「Script」という名前のシステムテーブルの要素で、処理に関する OData の概念に準拠しています。
OData の共有、テスト、および監視
OData アクセス用のデータベースの共有
- 「OData アクセスの有効化」の手順を完了します。
- FileMaker Cloud Admin Console で FileMaker データベースへの OData アクセスが有効に設定され、適切に構成されていることを確認します。プロダクトドキュメンテーションセンターで FileMaker Cloud のマニュアルを参照してください。
- Web サーバーおよび OData Listener が実行されていることを確認します。
-
通信に暗号化を使用します。
OData では HTTPS 接続を使用する必要があります。HTTPS 接続では通信に SSL (Secure Sockets Layer) が使用されます。
OData API を呼び出すために使用するプログラミング言語またはテクノロジーは、Web サーバーとの通信に TLS (Transport Layer Security) v1.2 をサポートしている必要があります。
OData アクセスのテスト
OData API を実際の運用環境に展開する前に、意図したとおりに機能することを確認します。
- レコードの検索、追加、および削除などの機能をさまざまなアカウントおよびアクセス権セットでテストします。
- 異なるアカウントでテストしてアクセス権セットが正しく動作することを確認します。権限のないユーザによるデータへのアクセスまたは変更ができないようにしてください。
- 異なるオペレーティングシステムで実行してもソリューションが同じように動作することをテストして確認します。
OData アクセスの監視
サーバー管理者は FileMaker Customer Console を使用して OData Listener の起動と停止、OData 呼び出しの使用の追跡、および OData ログファイルのダウンロードを実行できます。
目的 | 使用 |
---|---|
OData Listener を起動または停止する | FileMaker Customer Console の [コネクタ] > [OData] タブ。プロダクトドキュメンテーションセンターで FileMaker Cloud ヘルプを参照してください。 |
OData API 呼び出しの使用を追跡する | FileMaker Customer Console の [コネクタ] > [OData] タブ。このタブには、FileMaker Cloud サブスクリプションで設定されている OData 年間制限、前回の年間リセット日から送信されたデータ量、およびサブスクリプションの年間リセット日が表示されます。 年間制限に近づいた場合、FileMaker Customer Console の [サブスクリプション] タブを使用して制限を増やすことができます。プロダクトドキュメンテーションセンターで FileMaker Customer Console ヘルプを参照してください。 |
OData API のログを表示する | OData クライアントがデータベースに接続している間、クライアントに関する使用状況データが「fmodata.log」ファイルに記録されます。 プロダクトドキュメンテーションセンターで FileMaker Cloud ヘルプを参照してください。 |