API
HTTP POST(JSON)
概要
このブロックは、指定されたURL(HTTPサーバー)へ、HTTPのPOSTメソッドを使って指定されたJSONデータを含む要求(リクエスト)を送り、応答(レスポンス)としてリソース(データ)を取得します。
JSONデータは、変数に格納されたデータをエンコードしてリクエストボディに含めます。リクエストヘッダーには、Content-Type: application/jsonを含めます。
- リクエストには、任意のクエリーパラメーターやリクエストヘッダーを含められます。
- レスポンスは、変数に格納されます。
- 本ブロックを使うことで、JSONデータをリクエストボディに含むHTTP POSTメソッドのWeb APIと連携可能です。
- レスポンスの"HTTP Status"が400番台・500番台のときは、ブロックの実行が失敗します。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
編集パネルに配置した当該ブロックの表示名が変更できます。 ブロックリストパネル中のブロック名は変更されません。 |
URL | リクエストするURLを指定します。 |
クエリーパラメーター |
クエリーパラメーターを指定します。キーとバリューの組み合わせで指定します。 |
リクエストボディを指定する変数 |
変数を指定します。この変数に格納されたデータは、JSONエンコードされ、リクエストボディに含められます。 |
ブロックメモ | このブロックに関するメモが記載できます。このブロックの処理に影響しません。 |
エラー時の繰り返し回数 | リクエストエラー時の繰り返し回数を指定します。 |
繰り返し間隔 | リクエストエラー時の繰り返し間隔を秒単位で指定します。 |
レスポンスを格納する変数 |
HTTPサーバーが返すレスポンスを格納する変数を指定します。 変数に格納する値は、レスポンスのメッセージ・ボティのみです。レスポンスの「Content-Type」ヘッダーが「application/json」の場合は、メッセージ・ボディをデコードした結果を変数に格納します。 詳細については、「出力仕様>HTTP GET/HTTP POST/HTTP PUT」を参照してください。 |
リクエストヘッダー |
リクエストヘッダーを指定します。キーとバリューの組み合わせで指定します。 「Bearerトークン認証」や「Basci認証」などのように、Web APIによっては追加のリクエストヘッダーが必要な場合があります。このプロパティは、そのような場合に使用します。 以下は、「Bearerトークン認証」を指定した例です。 |
使用例
ここでは、JSONPlaceholderを使用して、「HTTP POST(JSON)」ブロックの使い方を紹介します。
JSONPlaceholderは、ウェブ開発者がデータをモックアップするためのWebサービスで、JSON形式でデータを返します。RESTfulなAPIとして機能し、HTTPリクエスト(POST、GET、PUT、DELETEなど)を受け付けます。
JSONPlaceholderを使用したHTTP POSTの例について簡単に説明します。以下は、新しくブログなどの記事を投稿するAPIの仕様です。
- URL:https://jsonplaceholder.typicode.com/posts
- 投稿データ:新しい投稿データを含むJSON形式のオブジェクト
名前 説明 値の例 userId 投稿のユーザーID 1
title 投稿のタイトル "example title"
body 投稿の本文 "example body"
投稿データは、JSON形式のオブジェクトで作成する必要がありますが、ここでは「スプレッドシートのデータを取得」ブロックを使って実現する方法を紹介します。
投稿データ用に、以下のGoogleスプレッドシートを準備します。
このGoogleスプレッドシートは、GCPサービスアカウントのメールアドレスと共有しておく必要があります。GCPサービスアカウントのメールアドレスは、フローデザイナーの「設定」の「GCPサービスアカウント」で確認できます。
このGoogleスプレッドシートを「スプレッドシートのデータを取得」ブロックで処理すると、変数に以下のようなオブジェクトの配列形式のデータが格納されます。
[ { "userId": 1, "title": "example title", "body": "example body" } ]
後は、この配列の先頭(0番目)のオブジェクトを利用すれば良いわけです。
このケースの「スプレッドシートのデータを取得」ブロックの指定は、以下のようになります。
設定するプロパティと値は以下のとおりです。
プロパティ | 指定値 |
---|---|
ファイル名 | 作成したGoogleスプレッドシートのファイル名もしくはURL |
結果を格納する変数 | request_body |
このデータを使って、JSONPlaceholderを使用したHTTP POSTを「HTTP POST(JSON)」ブロックで実現すると以下のようになります。
設定するプロパティと指定値は以下のとおりです。
プロパティ | 指定値 |
---|---|
URL | https://jsonplaceholder.typicode.com/posts td>
|
リクエストボディを指定する変数 | request_body.0 |
レスポンスを格納する変数 | response |
このブロックを実行すると、以下のようなレスポンスが返ってきます。
{ "userId": "1", "title": "example title", "body": "example body", "id": 101 }
名前 | 説明 |
---|---|
userId | 投稿のユーザーID |
title | 投稿のタイトル |
body | 投稿の本文 |
id | 投稿のID |
このレスポンスは、「HTTP POST(JSON)」ブロックの「レスポンスを格納する変数」プロパティの指定で、responseという名前の変数に格納されます。
この使用例では、変数に格納されたレスポンスをデータ投稿の履歴としてBigQueryテーブルに格納することにします。
変数に格納されたデータをBigQueryテーブルに格納するには、BigQueryカテゴリーの「変数からテーブルへロード」ブロックを使用します。使用例は、以下のとおりです。
設定するプロパティと指定値は以下のとおりです。
プロパティ | 指定値 |
---|---|
投入データの変数 | response |
投入先のデータセット | レスポンスデータ格納用のBigQueryデータセット |
投入先のテーブル | レスポンスデータ格納用のBigQueryテーブル |
スキーマ設定 | 上図のように指定 |
これら3つのブロックを組み合わせてフローの完成です。