RESTfm で Read する
いよいよ RESTfm を実際に使っていきます。まずは CRUD の基本である Read を行います。使用するメソッドはもちろんGET
で、Webブラウザ で簡単に試すことができます。このメソッドを用いる限りデータベースのデータがいじられるということはないので、気軽に試してみてください1。
基礎となる URI
今後の説明を分かりやすくするために、RESTfm を以下の場所に配置したと仮定します。
http://hogehoge/RESTfm/
取得するフォーマットは HTML
これまた分かりやすさを重視して、返ってくるフォーマットとしては HTML を選択します。別のフォーマットを選択したい場合は以前の記事に書いた内容を参照してください。
まずはルートフォルダ
前置きが長くなりましたがさっそくアクセスです。Webブラウザ で以下の URI にアクセスしましょう。
http://hogehoge/RESTfm/
データベース一覧と、そこへのリンクが表示されたはずです。おめでとうございます! RESTfm の API が叩けました。返り値のフォーマットが HTML なのでどうしても単なる Webページ や Webアプリケーション に見えてしまいますが、HTML というフォーマットに則った返り値であるとみることができます。
このアドレスへのアクセスは、FileMaker Server で言えば、データベース名選択画面にアクセスしたことと同じです。
データベースへのアクセス
次に個々のデータベースの API を叩きます。対象のデータベース名をMember
とした場合には URI は以下のようになります。アクセスしてみましょう。
http://hogehoge/RESTfm/Member
デフォルトのフォーマットは HTML ですので、HTML の形式(Webブラウザで見て違和感ない形式)で内容が表示されたのではないでしょうか。リンクとしてlayout
やscripts
という名称を見ることができますね。だいたい予想はつくと思います。
データベースのレイアウトへのアクセス
さらに掘っていって、データベース内のレイアウトの API を叩きましょう。対象のデータベース名がMember
、レイアウト名がcategories
と仮定します。この場合、以下の URI を叩けば OK です。当該レイアウト内のレコードが並んでいるのが見えると思います。
http://hogehoge/RESTfm/Member/layout/categories
なお、レイアウト一覧を表示させたい場合は以下の URI を叩きます。
http://hogehoge/RESTfm/Member/layout
レコードへのアクセス(レコードIDを指定する)
さらにさらに掘っていって、レコード単体の API を叩きましょう。対象のデータベース名がMember
、レイアウト名がcategories
、レコードIDが12345
の場合、以下の URI を叩きます。
http://hogehoge/RESTfm/Member/layout/categories/12345
なお、「レコードID」を知るためには別途取得の必要がありますが、その方法についてはここでは省略します。
レコードへのアクセス(フィールドの一意の値を指定する)
「レコードID」を指定する方法は見通しが悪いので、フィールド名の値を利用してレコードの API を叩く方法を示しましょう。こちらの方が使い勝手が良いでしょう。
対象のデータベース名がMember
、レイアウト名がcategories
とし、categories
の中にcategory_id
というフィールドがあると仮定します。このcategory_id
が123
というレコードの API を叩くためには、以下の URI にアクセスします。
http://hogehoge/RESTfm/Member/layout/categories/category_id%3D%3D%3D123
すなわち、レイアウトを指定した次の階層に、フィールド名=検索条件と指定すればよいのです。ここでの「検索条件」の指定方法は FileMaker の検索書式と同一です。
上記例では「検索条件」を「==123」と指定しています。もともとの URI 指定の書式に含まれる「=」と合わせると 3 つの「=」が並ぶことになります。そして URI では記号や日本語はエンコードする必要がありますので2、「=」という記号を「%3D」とエンコードし、それを 3 つ連ねた、というわけです。エンコード前の状態は「category_id===123」ということです。
この方法で API を叩く際には一点注意することがあります。それは、レコードが一意に定まる検索条件を指定するということです。検索の結果、複数のレコードがヒットしてしまった場合はエラーが返ってきます。
他にも Read(GETメソッド)の API はあります
あまりに一気に説明しても消化しきれないと思うので、この記事ではここまでにします。記事タイトルに「その1」とありますように、「その2」まで書きますので残りはそちらに譲りたいと思います。