初心者のFileMaker pro Q&A

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2021-07-21 23:09:52

nim
メンバー

[解決] GraphQLを利用したAPIアクセス

お世話になっております。

これまで様々なREST APIによるデータ取得を行なってきましたが、ここへきてGraphQLというものに遭遇し、困惑しています。
具体的には、MatterPortというアメリカのサービスに、FileMakerからGraphQLのクエリを用いて連携をしたいと考えています。
GraphQLについて調べてみると、GETやPOSTなど基本的にはRESTと同じようなかたちでリクエストを送ることができるようでしたので、cURLを用いてサンプルデータに対してリクエストを試みたのですが、うまくいきません。
FileMakerにおけるGraphQLを使ったAPIリクエストについて、下記以外のやり方で成功している、という例がありましたらぜひ教えていただきたく存じます。探してみたところ、FileMaker × GraphQLの実装例を見つけることができなかったので……。

[ Table::curlフィールド ]
curl {{base_url}} \
  -X POST \
  -H "Authorization: Basic {{user_auth}}" \
  -H "Content-Type: application/json" \
  -d @$json

上記cURLにおいて、
{{base_url}} -> 単一のエンドポイント
{{user_auth}} -> base64エンコードされた、<token_id:token_secret>形式の改行なしの認証情報
@$json -> {"query": "models { results { name } }"} ←JSON形式でのクエリをスクリプト内の変数$jsonとして用意。"query"キーの値に、GraphQLのクエリ情報を丸ごと入れてます。

この方法だと、認証まではうまくいっているようなのですが、データとしては、「{"code":"not.found","message":"Not found"}」が返ってきます。ドキュメントを見ますと、「リクエストされたオブジェクトが存在しません。関連する操作で特定の ID フィールドを使用すると、このエラーが表示されます。」とのことなのですが、どうもよく理解できません。
( https://support.matterport.com/hc/ja/ar … エラーコード-0-3 )

ちなみに、アクセスしている環境はproductionではなくsandboxモードなのですが、MatterPortのガイドを読むと、sandboxモードにおいては、ユーザーが作成したモデルではなく、MatterPort社が用意しているデモモデルへのアクセスが提供されるということですので、このリクエストが通るならば、レスポンスにはそのデモモデルのモデルネームが返ってくるはずです。

それが返ってこないということについて、そもそもリクエストの方法が間違っているのか、あるいはMatterPortの問題なのか…その原因の切り分けができかねています。
エラーコードとはいえJSONが返ってきていることを考えるに、リクエストのフォーマット、cURLの記述方法自体は少なくとも間違っていない、ということはいえるでしょうか…。

MatterPort GraphQL Schema
https://api.matterport.com/docs/reference

編集者 nim (2021-07-21 23:16:15)

オフライン

#2 2021-07-21 23:14:36

nim
メンバー

Re: [解決] GraphQLを利用したAPIアクセス

なお、以下の方法はすでに試しており、すべて失敗しています。

・Content-typeを application/graphql にしてみる。
・@$json内のデータを、{"query": "query { models { results { name } } }"} にしてみる。
・@$json内のデータを、{\"query\": \"query { models { results { name } } }\"} にしてみる。

オフライン

#3 2021-07-22 23:29:59

himadanee
ゲストユーザー

Re: [解決] GraphQLを利用したAPIアクセス

まだ全体を理解してませんが、ドキュメント見てもresultsというのが見当たりませんが、どっから出てきました?
query の models のargumentsは
models(
include: [SearchInclusion!],
query: String,
sortBy: [ModelSort!],
pageSize: Int,
offset: String
)
と書いてありますが...

#4 2021-07-23 08:20:13

Shin
メンバー

Re: [解決] GraphQLを利用したAPIアクセス

cURLでは接続できているのですか?

オンライン

#5 2021-07-23 10:41:38

himadanee
ゲストユーザー

Re: [解決] GraphQLを利用したAPIアクセス

results というのは、取得結果の構造の方に含まれてるということは、わかりました。

https://support.matterport.com/hc/en-us … 042091433/
にある、Sample Request ではどうなりますか?

残念ながらAPIを使うには有料ライセンスが必要ということなので、机上の推論しかできそうにないです。

#6 2021-07-23 16:14:56

nim
メンバー

Re: [解決] GraphQLを利用したAPIアクセス

みなさんありがとうございます。
細部を検証した結果、リクエストする単一のPOSTエンドポイントの末尾に半角スペースが入っていたのが原因でした……。これを直したところ、私が試した上記手法の全てで、正常なレスポンスが返ってきました。
何をやっても正しくないと言われるので、なんて厳格なAPIなんだ…と思っていたのですが、一転して、GraphQLのストライクゾーンの広さに驚いています…。

いつもみなさんのご協力に心から感謝しております。本スレッドが今後、FileMakerでGraphQLを叩く方達の参考になれば幸いです。

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer