API連携のテストには “テキストを挿入” がおすすめ
こんにちは。
株式会社フルーデンスの小巻です。
FileMaker 16 より URL から挿入 が大きく改良されました。
cURLオプション を使えるようになった点がすごく大きいですね。
知らない方も多いようですが、バージョン15でも httpspost などは使えてたんですよね。
https://www.filemaker.com/help/15/fmp/ja/#page/FMP_Help%2Finsert-from-url.html
[URL から挿入] は、http、https、httppost、httpspost、ftp、ftps、および file プロトコルをサポートします。FileMaker Pro は、URL によってターゲットフィールドに指定されたリソースをダウンロードします。
ただ、外部サービスとの連携をする際には、デフォルトの機能ではできないことが多く、私は BaseElementsプラグイン を利用して、cURLコマンドを実行していました。
https://baseelementsplugin.zendesk.com/hc/en-us/articles/203843738-BE-HTTP-POST
BE_HTTP_POST ( url ; parameters { ; username ; password } )
Does a http POST function and returns the results. This uses the curl library so output will be similar to that. This is used in conjunction with the BE_HTTP_Set_Custom_Header function to set custom headers in advance and the BE_HTTP_Response_Code and BE_HTTP_Response_Headers functions to get the result values after the POST is complete.
話を戻しまして。
API連携をする際に、cURLオプションに色々と記述するわけですが、FileMakerの計算式で書くには、少ししんどいケースがあります。
Dropboxのuploadなど
たとえば、DropBoxのAPIで upload を使う場合に、以下のように path を指定するのですが、 path を計算式で書くのがしんどいですよね。
https://www.dropbox.com/developers/documentation/http/documentation#files-upload
curl -X POST https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer token" \
--header "Dropbox-API-Arg: {\"path\": \"/Homework/math/Matrices.txt\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}" \
--header "Content-Type: application/octet-stream" \
--data-binary @local_file.txt
uploadのオプションを計算式で記述する場合
Let ( [
~a = "curl -X POST" ;
~b = "--header \"Authorization: Bearer __TOKEN__\"" ;
~c = "--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"__PATH__\\\",\\\"mode\\\": \\\"add\\\",\\\"autorename\\\": true,\\\"mute\\\": false}\"" ;
~d = "--header \"Content-Type: application/octet-stream\"" ;
~e = "--data-binary @$data" ;
~list = List ( ~a ; ~b ; ~c ; ~d ; ~e ) ;
~value = Substitute ( ~list ; [ "¶" ; " " ] ; [ "__TOKEN__" ; z_dropboxToken ] ; [ "__PATH__" ; path ] )
] ;
~value
) /*let*/
とか
Let ( [
~list =
List (
"curl -X POST" ;
"--header \"Authorization: Bearer __TOKEN__\"" ;
"--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"__PATH__\\\",\\\"mode\\\": \\\"add\\\",\\\"autorename\\\": true,\\\"mute\\\": false}\"" ;
"--header \"Content-Type: application/octet-stream\"" ;
"--data-binary @$data"
) ;
~value = Substitute ( ~list ; [ "¶" ; " " ] ; [ "__TOKEN__" ; z_dropboxToken ] ; [ "__PATH__" ; path ] )
] ;
~value
) /*let*/
などのように記述する必要があります。
uploadのpathをピックアップ
前述のpathのみピックアップすると、以下のようになります。
"--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"__PATH__\\\",\\\"mode\\\": \\\"add\\\",\\\"autorename\\\": true,\\\"mute\\\": false}\""
この式は、以下のような結果になります。
--header "Dropbox-API-Arg: {\"path\": \"__PATH__\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}"
けっこうしんどいですよね。
もちろん、テスト後にはカスタム関数を作成すればよいと思うのですが、テストする際にAPIの記述ミスがあると、効率が悪く思います。
APIをテストする際に “テキストを挿入” を使う
そのため、APIをテストする際に、いきなり計算式でかくのではなく テキストを挿入 をつかって、書くのがよいと思います。

テキストを挿入 の場合は、そのままのテキストを変数に設定できるため、すごく便利です。
APIのテストがうまくいけば、その後は、カスタム関数などで定義して頂くのがよいと思います。
フィールドの値を使うのはどうか
フィールドの値を使うことでも同じことができますが、コンテキストを意識しないといけないので、個人的には テキストを挿入 がよいと思います。
複雑な計算式を書く場合にはエディターがおすすめ
複雑な計算式を書く場合には、エディターがおすすめです。
ただのエディターだと見づらいので、私はFileMakerのコードをハイライトするように設定しています。

色の見やすさはおいといて、識別しやすいですよね。
エディターを使うと、記述ミスも見つかりやすいですよね。
こちらのURLよりダウンロードできます。
https://github.com/frudens/filemaker-syntax
あとがき
せっかく FileMakerカンファレンス で API連携 のお話をさせて頂いたので、API連携の記事や関連する記事を書いていきますので、楽しみにしていてください。API連携のテストには テキストを挿入 がおすすめ
1件のコメント