クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  FileMaker Data API を使ってPHPからFileMakerを操作する(1)
作成日:2024年10月28日

FileMaker Data API を使ってPHPからFileMakerを操作する(1)

イメージイラスト
にゃん太

どうも、にゃん太です

前回まで「FileMaker Data APIを実行する」について書いてきましたので、今回のメモでは「FileMaker Data API」でPHPからFileMakerファイルへアクセスする方法について書いていきます


「FileMaker Data API」を使用する大まかな流れ

技術的な事はClaris社のWEBサイトを見て頂くとして、基本的な流れとしては下記の通りです
  1. FileMakerファイルにアクセスし、TOKENを発行する
  2. TOKENを使用し、必要な処理を実行
  3. TOKENを終了する
本当に大まかではありますが、この順番で操作方法を見ていきます

TOKENの発行

まず始めに行うのがTOKENの発行です
権限を持たない人が勝手にファイルアクセスしては困りますので、権限を持っている事を示す作業となります
必要な情報は、ファイルが存在するサーバーのURL、ファイル名、ファイルへアクセスする為のアカウント名とパスワードとなります

PHP

function FMS_TOKEN($domain, $filename, $account){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/sessions"; $headers = array( 'Authorization: Basic '.$account, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'POST', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); $token = $obj->response->token; return $token; }

引数を3つ使用していますので、軽く説明します
$domain

サーバーのURLです

説明するまでも無いと思いますが、例えば「https://fm-memo.nyanta.jp」の様な内容です

$filename

FileMakerファイルの名前です

「test.fmp12」というファイルへアクセスするのであれば、「test」で問題ありません

日本語名でも大丈夫ですが、URLエンコードする必要があります

$account

FileMakerファイルへアクセス可能なアカウント名とパスワードをBase64エンコードした文字列となります

例えば、アカウント名が「admin」、パスワードが「123」だとした場合、コロンで連結した文字列「admin:123」を作成し、それをBase64エンコードします

この例であれば「YWRtaW46MTIz」という文字列になりますので、これを使用します


FileMaker Data APIで実行できる事

TOKENを取得したら、いよいよ実際の処理に入りますが、その前に何が出来るのかを見てみましょう

といった処理が可能となっています

製品情報の取得

あまり使用する事もないと思いますが、製品情報を取得できます
これは、先程のTOKENを使用する必要もなく、URLだけで取得可能な情報となっています

PHP

function FMS_INFO($domain){ $URL = $domain."/fmi/data/vLatest/productInfo"; $json = file_get_contents($URL); return $json; }

取得結果

データベース名の取得

サーバー上のデータベース名を取得する事ができます
これもTOKENを使用する必要もなく、URLだけで取得可能な情報となっています

PHP

function FMS_databaseList($domain){ $URL = $domain."/fmi/data/vLatest/databases"; $json = file_get_contents($URL); return $json; }

取得結果

尚、取得可能なのはデータベース自体のFileMaker Data APIが有効になっているファイルだけです
また、フィルタが有効になっている場合はAuthorizationヘッダでアカウント名とパスワードを付帯する必要があります

スクリプト名の取得

FileMakerファイル内の利用可能なスクリプト名を取得する事ができます
取得したTOKENを利用する必要があります

PHP

function FMS_scriptList($domain, $filename, $token){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/scripts"; $headers = array( 'Authorization: Bearer '.$token, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'GET', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); return $json; }

取得結果

上記の通り、フォルダの状況も含めてスクリプト名一覧が取得できます

レイアウト名の取得

FileMakerファイル内のレイアウト名を取得する事ができます
取得したTOKENを利用する必要があります

PHP

function FMS_layoutList($domain, $filename, $token){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/layouts"; $headers = array( 'Authorization: Bearer '.$token, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'GET', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); return $json; }

取得結果

上記の通り、フォルダの状況も含めてレイアウト名一覧が取得できます

レイアウトメタデータの取得

指定したレイアウトに配置されたフィールド、ポータル情報を取得する事ができます

PHP

function FMS_layoutMetaData($domain, $filename, $layout, $token){ $URL = $domain."/fmi/data/vLatest/databases/".$filename."/layouts/".$layout; $headers = array( 'Authorization: Bearer '.$token, 'cache-control: no-cache', 'Content-Type: application/json', ); $context = array( 'http'=>array( 'method'=>'GET', 'header'=>implode("\r\n",$headers) ) ); $json = file_get_contents($URL, false, stream_context_create($context)); return $json; }

取得結果

上記の様にデータを取得する事ができます
尚、新しい引数がありますので、一応説明します
$layout

対象とするレイアウト名を指定します

日本語名でも大丈夫ですが、URLエンコードする必要があります



長くなったので、今回はここまでとします
FileMaker Data API を使ってPHPからFileMakerを操作する(2)へ続きます

メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム