初心者のFileMaker pro Q&A (旧掲示板)

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

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

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


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

nim
Member

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

Last edited by nim (2021-07-21 23:16:15)

Offline

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

nim
Member

Re: GraphQLを利用したAPIアクセス

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

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

Offline

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

himadanee
Guest

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
Member

Re: GraphQLを利用したAPIアクセス

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

Offline

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

himadanee
Guest

Re: GraphQLを利用したAPIアクセス

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

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

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

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

nim
Member

Re: GraphQLを利用したAPIアクセス

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

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

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 515.56 KiB (Peak: 520.47 KiB) ]