見出し画像

【GAS】APIを叩いてPOSTでJSONを送信したり、その通信をPostmanでエミュレートしてみたり

GASからAPIのエンドポイントへアクセスして、POSTで情報送信出来るようにしたいの巻きです。

結論

// データベース登録用会員データ.gs
// sample
class 会員データ{
  constructor(名前, 電話番号, メールアドレス){
    this.name = 名前;
    this.tel = 電話番号;
    this.mail = メールアドレス;
  }

  JSONとして取得(){
    return stringify(this)
  }
}
// APIアクセス.gs

// 会員データクラスのインスタンスを作成してからAPIアクセスクラスに渡す
function APIアクセス(会員データ){
  const url = "https://[APIのURI]";
  const payload = 会員データ.JSONとして取得()
  const headers = { "Content-Type" : "application.json" }

  const options = {
    "method" : "POST",
    "headers" : headers,
    "payload" : payload
  }
  const response = UrlFetchApp.fetch(url, options);
  const json_response = JSON.parse(response);
}

やってることのせつめい

・送信したいデータ構造をクラスで定義して、入力した情報を使ってインスタンスを作れるようにしておく
・クラス内に、自身をJSONとして取得出来るようにしておくと便利
・APIアクセスの際は、headers内にContent-Typeを指定して、application.jsonを設定しておく
・payloadはjsonをそのまま渡す
・UrlFetchApp.fetch(url, options); でAPIを叩く
・レスポンスをJSON化して取り扱えるようにする

……という一連のアクセスをPostmanでシミュレーションする

ローカルで開発してるAPI、アクセステストしづらい問題。
Postmanを使うことで、ローカルPC内でアクセステストが完結するので大変楽になります。

というわけで、「GASから送った情報をAPIで受け取って云々する」というものを作成する際に、GASから送られてくる情報をPostmanでエミュレート出来るようにします。
といっても別にGASからだから特別な情報がくっついてくるとかはないので、「POST通信でJSON送る」の設定が出来ていれば問題ないです。たぶん。(たぶん)

・新しいリクエストを作成し、メソッドをPOSTにして、URIを設定する
・「ヘッダー」タブ内のCotntent-Typeを「application/json」に設定する
・「ボディ」タブ内のラジオボタンで「Raw」を選択する
・ラジオボタンの右端にあるドロップダウンを「JSON」にする
・ここでGASの画面に戻り、会員データを作成してJSONとして取得メソッドを噛ましたものをconsole.logで出力してコピーする
・Postmanに戻り、ボディタブの入力欄にペーストする

これでGASから送信するのとほぼ同じ情報でローカル起動したAPIへアクセステストできるようになる、はずです。

この記事が気に入ったらサポートをしてみませんか?