FileMaker Data API の使い方など。
ドキュメントは一応ある。
が、API 仕様書的なものは FileMaker Server にアクセスしないと見れない。
処理の流れ
認証なしに使えるエンドポイント以外はログイン用の API を叩いて取得したアクセストークンを使ってリクエスト。
- Login API を叩いてアクセストークンを取得
- 取得したアクセストークンを使って API リクエストを投げる
アクセストークンの取得
Login API を叩く
https://<fms.host>/fmi/data/{version}/databases/{database}/sessions
POST リクエストで Authorization
, Content-Type
ヘッダーが必須。
さらに、ボディも指定しないとエラーになる。
なので curl で叩くとすると下記のような感じ。
% curl -k -XPOST -H 'Authorization: Basic <Base64 エンコード文字列>' -H 'Content-Type:application/json' -d '{ }' https://<fms.host>/fmi/data/vLatest/databases/dataapi/sessions
<Base64 エンコード文字列>
にはデータベースの ユーザー名:パスワード
を base64 でエンコードしたものを入れる。
例えば、ユーザー名が dbuser で パスワードが dbuserpassword の場合、mac なら下記のような感じで取得した値 ZGJ1c2VyOmRidXNlcnBhc3N3b3Jk
を使う。
% echo -n 'dbuser:dbuserpassword' | base64
ZGJ1c2VyOmRidXNlcnBhc3N3b3Jk
アクセストークンを使ったリクエスト
ログインAPIで取得したトークンを使って下記のような感じでリクエスト
% curl -k -H 'Authorization: Bearer <アクセストークン>' https://<fms.host>/fmi/data/vLatest/databases/dataapi/layouts
フィールドの値
null値
渡せない
{
"fieldData": {
"フィールド1": null,
"フィールド2": "フィールド2の値"
}
}
などをレコード作成時の渡すと下記のようなエラーになる。
{"messages":[{"code":"1708","message":"Parameter value is invalid"}],"response":{}}
日付
米国式に 月
日
年
の順で指定する必要があるので、2022/7/13
のように指定するとエラーになる。
例
7/13
7/13/2022
7/13/22
ちなみに、区切り文字は -
も使えるので、7-13
などでも OK。
この辺りの書式について明記されたものはなさそうだが、Product info API の結果を見ると下記の感じ。
{
"response": {
"productInfo": {
"name": "FileMaker Data API Engine",
"buildDate": "06/30/2022",
"version": "19.5.2.201",
"dateFormat": "MM/dd/yyyy",
"timeFormat": "HH:mm:ss",
"timeStampFormat": "MM/dd/yyyy HH:mm:ss"
}
},
"messages": [
{
"code": "0",
"message": "OK"
}
]
}
"dateFormat": "MM/dd/yyyy"
となっているので、これが書式ということなのかも。。。