Contents
APIの基本
Bubble APIは、他のサービスがあなたのBubbleアプリにリクエストを行い、接続するための方法です。これは、プラグインまたは API コネクタを介して行われる、他のサービスからのデータへのアクセスまたは他のサービスへのリクエストとは異なります。
APIとAPIコネクターの比較
外部があなたのアプリで何かをする(ワークフローを実行する、データを読む)ことを望むと同時に、Bubble APIは正しいツールである。一方、アプリに外部データを読み込ませたり、他のシステムで何らかのアクションを起こさせたい場合(Facebookのプロフィール画像を取得したり、TwilioでSMSを送信したり)、Bubble APIは適切なツールではありません。代わりに、プラグインまたはAPIコネクタを使用するか、この新しいサービスを追加するために新しいプラグインを構築する必要があります。
Data APIとWorkflow APIの比較
POST/Workflow APIを使用すると、アプリ内の新しいページにアクセスし、他のサービスからトリガーされるワークフローや、スケジューリング目的で使用されるワークフローを編集することができます。アプリ内で将来的にワークフローをスケジュールする必要がある場合、または週や月単位でワークフローを実行する必要がある場合、または他のサービス/サーバーがアプリ内でワークフローをプログラム的にトリガーする場合、ワークフロー API はそのための正しいツールです。
GET/Data APIは、データを外部に公開するための手段です。Bubbleアプリのデータベースに他のサービス/サーバーからプログラムでデータを読み書きさせたり、同じデータベースを共有する別のシステムを自分で構築したり、他の開発者にデータを公開したりする必要がある場合、Data APIはそのための適切なツールになります。
具体的な使用例
その使い方を少しだけご紹介します。
・Stripeを使った定期購入で、クレジットカードの決済に失敗したときにメールを送りたい。バブルエディタでこれを行うAPIワークフローを定義し、チャージが失敗したときにワークフローAPI経由でStripeにこのワークフローをトリガーさせることができます。
・毎週、データベースに新しく作成されたものを取得したい。Data API経由で新しいものを取得するスクリプトを書けばよい。
・iOSネイティブアプリ(またはiWatchアプリ)をSwiftでハンドコーディングしたいと思います。Workflow と Data API の両方を使用して、Swift でコーディングされたアプリからデータを取得し、ユーザーにログインし、ワークフローを実行することができます。
・また、APIワークフローは、アプリにスケジュールされたワークフローを設定するためのツールでもあります。スケジュール型および反復型のワークフローには外部サービスは含まれませんが、アプリによってバックグラウンドでトリガーされるいくつかのAPIワークフローを設定する必要があります。
・最後に、APIが提供するオプションとして、あなたのアプリを他の開発者に開放することができます。Facebookは開発者に「Login with Facebook」ボタンを使わせているので、他の開発者があなたのアプリと接続したり、データを読み取ったり、ユーザーにあなたのアプリの認証情報を提供するアプリを作ることができる。
APIを準備する
APIの有効化
Bubble APIは現在、Personalプラン以上のユーザーがアクセス可能です。APIを有効にするには、設定タブのAPIセクションに移動し、該当するチェックボックスにチェックを入れてください。
GET/DATA APIを設定する
アプリケーションのデータを外部に公開するには、APIを介して公開するタイプを選択します。設定タブのAPIセクションで関連するチェックボックスをチェックすることで、これらのフィールドを選択することができます。データAPIが有効化された後、そのインタフェースは存在しないことに注意してください。むしろ、公開される各タイプで利用可能になる特定のエンドポイントが存在します。
重要: データ型を公開するとすぐに、外部のサービスや開発者は、あなたのアプリケーションにアクセスしなくても、あなたのデータにアクセスできるようになります。例えば、あなたからAPIキーを取得した)認可された開発者だけが正しいデータにアクセスできるように、プライバシールールを慎重に設定する必要がありますxs。
APIのワークフローを設定する
アプリケーションメニューの一番下、「Backend Workflows」からアプリのAPI部分にアクセスすることができます。これにより、特定のページに属さない、いくつかの異なる種類のワークフローがある特別な「ページ」に移動します。デザイン」タブにはアクセスできず、すべての作業は「ワークフロー」タブで行われます。
APIのワークフローを作成する
APIワークフローの作成は、ページ内で通常のワークフローを作成するのとよく似ていますが、いくつかの違いがあります。各 API ワークフローは、Workflow API 経由で呼び出すことのできる「エンドポイント」に対応しています。
各APIワークフローには、一意の名前を付ける必要があります。この名前は、API へのリクエストの URL に使用されるため、小文字で空白を 含まない名前である必要があります。
APIワークフローで使用できるアクションは、サーバーサイドのみのアクションです。
認証とAPIワークフローの外部への公開に関して、いくつかのオプションを選ぶことができます。
1.公開APIワークフローとして公開:このAPIワークフローを他のサービス(Stripeなど)から使用したり、他の開発者がこのエンドポイントを呼び出したりする場合は、このボックスにチェックを入れます。アプリ内でスケジュールされた操作のためだけにワークフローを設定する場合は、このボックスにチェックを入れるべきではありません。
2.このワークフローは認証なしで実行できます。APIワークフローは通常、外部サービ スによってトリガーされた場合、APIキーを使用して実行されます。リクエストにAPIキーが必要ない場合は、このボックスにチェックを入れます。これは、ユーザーがアプリにサインアップまたはログインできるようにする場合に、特に便利です。
3.ワークフローの実行時にプライバシールールを無視する:APIワークフローは、送信されたトークン/キーに基づいて実行されます。すべてのプライバシールールは、それに応じて適用されます。しかし、時には、認証なしで実行してもこれらのルールをバイパスし、 データに対するすべての権限を持つ管理ユーザーとしてワークフローを実行したい場 合があります。そのような場合は、このボックスにチェックを入れます。セキュリティやプライバシーに関するオプションと同様に、この機能は慎重に使用し てください。
パラメータの定義
APIワークフローは、いくつかのパラメータを取ることができます。これは、リクエスト時(または将来のワークフローのスケジューリング時)に、どのデータをワークフローに送ることができるかを定義する方法です。パラメータを定義する方法は2つあります。自分で構造を定義する方法と、受信したデータの構造を自動的に検出する方法です。最初のオプションは、自分で定義したAPIワークフローや、リクエストの方法をコントロールする場合(例えば、スケジュールされたワークフローを使用する場合や、カスタムクライアントを構築する場合)に適しており、2番目のオプションはAPIワークフローのエンドポイントをWebhookへの応答として使用する場合に便利である。
APIワークフローの定義でパラメータを定義すると、その後のアクションでこのデータにアクセスできるようになります。定義したパラメータは、Expression Composerの最初のメニューの最上部に表示されます。定義したデータの種類によって、次のドロップダウンメニューに表示されるオプションが異なります。
手動定義
パラメータを追加する際には、パラメータ名、データの種類、パラメータがオプションかどうかを指定する必要があります。データの種類は非常に重要で、Bubbleはリクエストが行われたときにデータを検証し、パラメータが無効な場合はエラーを返します。リクエストの方法については、以下を参照してください。
自動検出
また、外部サービスから送信されるデータの構造を自動的に検出するオプションもあります(Webhook)。これを行うには、「Detect data」ボタンをクリックし、APIワークフローのエンドポイントへのリクエストをトリガーします。
なお、初期化を有効にするには、APIワークフローのエンドポイントURLへのリクエストを行い、最後にinitializeを追加する必要があります。エンドポイントは以下のようになる。
https://appname.bubbleapps.io/version-test/api/1.1/wf/endpoint/initialize
or
https://yourdomain.com/version-test/api/1.1/wf/endpoint/initialize
このリクエストは、アプリのテストバージョンに対して行う必要があります。
データが検出されたら、必要なフィールドを選び、このデータのタイプを選択して、その後のアクションでパラメータを使用することができるようになります。
APIからのデータ返送
ほとんどのAPIワークフローは何らかのアクションを実行しますが、状況によっては何らかのデータを返したい場合があります。例えば、APIワークフローがモノを作成した場合、その結果を表示したり保存したりするために、生のモノを返したいと思うだろう。データを返すには、’Return data from API’ アクションを使用します。このアクションは、API ワークフローに固有のものであり、一般的なワークフローには存在しません。
OAuth認証情報
OAuth認証情報をアプリケーションに追加するには、「設定」タブに移動します。
そこから、クライアントID用とクライアントシークレット用の2つのキーを取得します。これらの鍵は秘密にしておいてください。
次に、NameとRedirect_uriを追加する必要があります。
・Nameは、アプリへのアクセスを許可するアプリケーションです。
・Redirect_uriは、このアプリへの接続に成功した後にユーザーを送りたいURLのことです。
Swaggerの仕様
Swagger Specificationは、APIを記述するための標準的な方法です。ドキュメントを生成したり、他のツールにAPIを統合させたりするために使用することができる。Bubbleは、アプリケーションのAPIを有効化すると、すぐにSwagger Specificationを提供します。これを取得するには、エンドポイントにアクセスします。
https://appname.bubbleapps.io/api/1.1/meta/swagger.json
or
https://yourdomain.com/api/1.1/meta/swagger.json
Swagger仕様の規格の詳細については、こちらをご覧ください。
APIを使用する
Bubble APIに何らかのリクエストをすることで、APIを利用することになります。これらのリクエストは、あなた自身が行うこともできますし、外部のサービスや開発者が行うこともできます。
認証
アプリのAPIを公開するときは、セキュリティについて考えるようにしましょう! これには、アプリのAPIキーの共有について保守的になることや、アプリのデータAPIで公開されるデータについてプライバシールールを設定することが含まれます。
プライバシールールを設定しない場合、経験豊富な部外者がプライバシールールで保護されていないデータ型やフィールドを探索するトリックを見つけることができることに注意してください。言い換えれば、「無名によるセキュリティ」は良いアプローチではありません。
APIキーの発行は、「設定」タブの「API」セクションで行うことができます。なお、APIキーでリクエストした場合、そのユーザーは管理者ユーザーとみなされ、データに関するすべての権限を持つことになります。一方、サインアップワークフローから返されたトークンを使用している場合、プライバシールールは現在のユーザに適用されます。
【あわせて読みたい】
【参考英語サイト】