【GitHub Actions、Bash】「curl: (3) URL using bad/illegal format or missing URL」「curl: (3) nested brace in URL」といったエラーメッセージが出た時に試したこと

714 語
4 分
【GitHub Actions、Bash】「curl: (3) URL using bad/illegal format or missing URL」「curl: (3) nested brace in URL」といったエラーメッセージが出た時に試したこと

はじまり#

リサちゃん avatar
リサちゃん
おおっ、GitHub Actionsだとそうなるんだ!
135ml avatar
135ml
Bashかあ
リサちゃん avatar
リサちゃん
エスケープしなくて良くなるなあ!
135ml avatar
135ml
記法が少し増えるんだよなあ

curlコマンド#

Bash のcurlコマンドは 、API にリクエストする時に便利なコマンドです。

そして、それを使って、 JSON 形式のデータを POST する方法は多岐にわたります。

GitHub Actions を利用する方法も踏まえて、見ていきましょう。

基本の書き方#

まず、基本的な書き方は、curlコマンドの-dオプションまたは--dataオプションを使用して JSON データを直接書き込むことです。この際、Content-Typeヘッダーにapplication/jsonを指定する必要があります。

Terminal window
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://example.com/api

データファイルを使用する#

JSON データが複雑になってくる場合、外部ファイルに JSON を保存して、-dオプションにファイルを指定することで POST データとして使用できます。

data.jsonは、送信したい JSON データを含むファイルのことです。

Terminal window
curl -X POST -H "Content-Type: application/json" -d @data.json https://example.com/api

jqを使う#

jqは JSON を扱うためのコマンドラインツールであり、データ部を切り離して考えることが出来ます。

GitHub Actions の実行環境ではjqがプリインストールされていて、すぐに利用できます。

Terminal window
jq -n '{key: "value"}' | curl -X POST -H "Content-Type: application/json" --data @- https://example.com/api

環境変数やシェル変数を使用する#

シェルスクリプト内の変数や、 GitHub Actions の環境変数を JSON データに含めることができます。これにはenvコマンドを利用したり、シェルの変数置換機能を活用します。

Terminal window
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を利用する場合の記法。

Terminal window
curl -X POST -H "Content-Type: application/json" -d '{"key": "${{ secrets.YOUR_SECRET }}"}' https://example.com/api

シェル内の環境変数利用する場合の記法はこんな感じです。

Terminal window
curl -X POST -H "Content-Type: application/json" -d '{"key": "${{ env.YOUR_SECRET }}"}' https://example.com/api

この書き方であれば、ダブルクォーテーションをエスケープする必要がなくなるので、読みやすいコマンドになってより安全により速くコードをチェックできますね。

まとめ#

GitHub Actions でcurlを使用して JSON データを POST する方法は、シンプルなものから複雑なデータ構造を扱うものまで様々です。シナリオに応じて最適な方法を選択し、外部APIとの連携を効率的に行いましょう。

おしまい#

リサちゃん avatar
リサちゃん
なんだこれは視力検査かァ?
135ml avatar
135ml
ただでさえ見にくいJSONを、さらに見にくいBashで編集する修行・・・

以上になります!

記事を共有

この記事が役に立ったなら、ぜひ他の人と共有してください!

【GitHub Actions、Bash】「curl: (3) URL using bad/illegal format or missing URL」「curl: (3) nested brace in URL」といったエラーメッセージが出た時に試したこと
https://endorphinbath.com/posts/github-actions-curl-error-01/
著者
kinkinbeer135ml
公開日
2024-03-10
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【GitHub Actions、Bash】curlでPOSTする時のJSONの書き方いろいろ
Code GitHub Actionsでcurlを使い、JSON形式でPOSTする方法は、直接書き込み、ファイル使用、jq利用、変数を利用するなどがあります。
2
【Notion、Bash】Clineで綴るPythonのtypingモジュール完全ガイド
Code Clineで記事を書くために、自分が今まで書いた記事の文体や特徴をまとめるための資料を作る工程を紹介した記事です。NotionからMarkdownをエクスポートしてBashで加工してWordPressで反映します。
3
今年食ったサバ缶のまとめ(2025年版:後編)
Mackerel 2025年に筆者が食べたサバ缶、イワシ缶、サンマ缶などを紹介します。個人的な美味しさ、DHAおよびEPAの含有量の目安なども掲載しています。
4
今年食ったサバ缶のまとめ(2025年版:前編)
Mackerel 2025年に筆者が食べたサバ缶、イワシ缶、サンマ缶などを紹介します。個人的な美味しさ、DHAおよびEPAの含有量の目安なども掲載しています。
5
【Cloud Scheduler】コンテナを動かすために必要なgcloudコマンドをシェル関数化する
Code Google Cloud上でデプロイされたコンテナを操作するためにシェル関数を構築します。その関数には処理が完了した時やエラー発生時に通知を行ったりヘルプ機能も実装します。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次