はじまり

おおっ、GitHub Actionsだとそうなるんだ!

Bashかあ

エスケープしなくて良くなるなあ!

記法が少し増えるんだよなあ
curlコマンド
Bashのcurlコマンドは、APIにリクエストする時に便利なコマンドです。
そして、それを使って、JSON形式のデータをPOSTする方法は多岐にわたります。
GitHub Actionsを利用する方法も踏まえて、見ていきましょう。
基本の書き方
まず、基本的な書き方は、curlコマンドの-d
オプションまたは--data
オプションを使用してJSONデータを直接書き込むことです。この際、Content-Typeヘッダーにapplication/json
を指定する必要があります。
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://example.com/api
データファイルを使用する
JSONデータが複雑になってくる場合、外部ファイルにJSONを保存して、-dオプションにファイルを指定することでPOSTデータとして使用できます。
data.json
は、送信したいJSONデータを含むファイルのことです。
curl -X POST -H "Content-Type: application/json" -d @data.json https://example.com/api
jqを使う
jq
はJSONを扱うためのコマンドラインツールであり、データ部を切り離して考えることが出来ます。
GitHub Actionsの実行環境ではjq
がプリインストールされていて、すぐに利用できます。
jq -n '{key: "value"}' | curl -X POST -H "Content-Type: application/json" --data @- https://example.com/api
環境変数やシェル変数を使用する
シェルスクリプト内の変数や、GitHub Actionsの環境変数をJSONデータに含めることができます。これにはenv
コマンドを利用したり、シェルの変数置換機能を活用します。
curl -X POST -H "Content-Type: application/json" -d "{\"key\": \"$YOUR_VARIABLE\"}" https://example.com/api
GitHub Actionsのシークレットや環境変数を利用する
しかし、$
を使った記法は、ダブルクォーテーションをエスケープする必要性が出てきてしまいます。
僕が、GitHub Actionsを編集している時のリゾルバ的なやつに注意された時、結局どこが悪いのかが分からなくなったこととか普通にあります・・・。
そのため、GitHub Actionsを編集する際には、シェルスクリプト内の変数をJSONデータに含める際に、$
を使った記法を使うよりも可読性が上がる書き方があります。
GitHub Actionsのsecrets
を利用する場合の記法。
curl -X POST -H "Content-Type: application/json" -d '{"key": "${{ secrets.YOUR_SECRET }}"}' https://example.com/api
シェル内の環境変数利用する場合の記法はこんな感じです。
curl -X POST -H "Content-Type: application/json" -d '{"key": "${{ env.YOUR_SECRET }}"}' https://example.com/api
この書き方であれば、ダブルクォーテーションをエスケープする必要がなくなるので、読みやすいコマンドになってより安全により速くコードをチェックできますね。
まとめ
GitHub Actionsでcurlを使用してJSONデータをPOSTする方法は、シンプルなものから複雑なデータ構造を扱うものまで様々です。シナリオに応じて最適な方法を選択し、外部APIとの連携を効率的に行いましょう。
おしまい

なんだこれは視力検査かァ?

ただでさえ見にくいJSONを
さらに見にくいBashで編集する修行・・・
以上になります!
コメント