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件のコメント