投稿履歴
- shとbashの違いを徹底解説!シェルスクリプトの使い分け
- 【徹底比較】イーサネットとWi-Fi違いと選び方を解説
- 【徹底解説】UTF-8 BOMあり・なしの違いと選び方
- npmとYarn、開発者が知るべき違いとは?
- 【Linux】nanoコマンドの使い方 | 基本操作からショートカット、便利設定
- 「Git pull 強制」は危険?ローカル変更を破棄してリモートに合わせる安全な方法
- 【保存版】PNGとJPEGの違いを徹底比較!用途別使い分けガイド
- GUIとCUIの違いとは?初心者でもわかるメリット・デメリットと使い分けを徹底解説
- Web1 Web2 Web3 違いを徹底解説:それぞれの特徴と比較
- SMTP・POP3・IMAPの違いを徹底解説 | メール送受信プロトコル
- 【Linux】容量の大きいファイル・ディレクトリを確認する方法
- nc(Netcat)コマンド徹底解説|ポート指定で疎通確認する
- 【VSCode】JSON・XMLを整形・最小化する方法
- 【Excel】シートが見えない!表示されない原因と対処法
- 【Linux】lsofコマンドの見方・活用ガイド
- 【A5M2】テーブルにNULL値を入力する方法
- 【Linux】標準出力と標準エラー出力の違い
- DRAMとSRAMの違い・覚え方を徹底解説!
- 【サクラエディタ】スペースとタブを置換する方法
- 【Excel】VBAの起動方法(開発タブが表示されない場合)
Web APIとのやりとりや、バックエンドとの通信確認など、開発現場で頻繁に使われるのがcurlコマンドです。特にJSON形式でデータを送信する機会は多く、フロントエンドからの動作確認、APIの疎通テスト、自動化スクリプトなど幅広い用途があります。
この記事では、curlを使ってJSONデータをPOSTする基本的な方法から、実践的な応用、トラブルシューティングまで、初心者にもわかりやすく解説します。
前提(JSONPlaceholderを利用)
- JSONPlaceholderを利用して解説します。
- JSONPlaceholderは、無料のモックAPIサービスで、POST リクエストに対してダミーのレスポンスを返してくれます。
- 実際にAPI開発・デバッグで使われるcurlの動作を確認できます。
curlでPOSTする
まず、最もシンプルな形のcurlによるJSON POSTの例を見てみましょう。
コマンドプロンプトでcurlを実行
curl -X POST ^ -H "Content-Type: application/json" ^ -d "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}" ^ https://jsonplaceholder.typicode.com/postsLinuxでcurlを実行
curl -X POST \ -H "Content-Type: application/json" \ -d '{"title":"foo","body":"bar","userId":1}' \ https://jsonplaceholder.typicode.com/posts{ "title": "foo", "body": "bar", "userId": 1, "id": 101}| OS/環境 | 指定方法の例 |
|---|---|
| Linux | -d '{"key":"value"}' (シングルクォートOK) |
Windows cmd | -d "{\"key\":\"value\"}" (ダブルクォート&エスケープ) |
各オプション(-X、-H、-d)の説明
-X POST: HTTPメソッドをPOSTに指定します。これはサーバー側にデータを送信したいときに必要です。-H "Content-Type: application/json": リクエストヘッダに「このデータはJSON形式です」と明示するための指定です。-d '{...}': 実際に送信するJSONデータ本体です。-dのあとにシングルクォートまたはダブルクォートで囲んだJSON文字列を記述します。
外部ファイルからJSONを読み込んでPOSTする
テストケースが複数ある場合や、JSONデータが長大でコマンドラインでの記述が煩雑になる場合は、外部ファイルからデータを読み込む方法が便利です。
まず、JSONデータをファイルに保存します。たとえば、data.jsonという名前のファイルに次のような内容を記述します。
{ "name": "Alice", "age": 25, "city": "Tokyo"}その上で、以下のようにコマンドを実行します。
curl -X POST ^ -H "Content-Type: application/json" ^ -d @data.json ^ https://jsonplaceholder.typicode.com/postscurl -X POST \ -H "Content-Type: application/json" \ -d @data.json \ https://jsonplaceholder.typicode.com/posts-d @ファイル名の形式を使うことで、ファイル内の内容をそのままリクエストボディとして送信できます。
{ "name": "Alice", "age": 25, "city": "Tokyo", "id": 101}HTTPヘッダーと詳細ログの表示
送信したリクエストに対して、サーバーがどのようなレスポンスを返してきたかを確認することも重要です。以下のオプションを活用することで、より詳細な情報を得ることができます。
curl -ivo response.txt -X POST ^ -H "Content-Type: application/json" ^ -d "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}" ^ https://jsonplaceholder.typicode.com/postscurl -ivo response.txt -X POST \ -H "Content-Type: application/json" \ -d '{"title":"foo","body":"bar","userId":1}' \ https://jsonplaceholder.typicode.com/posts各オプション(-i、-v、-o)の説明
-i: HTTPヘッダー情報を表示。-v: 詳細な通信ログを表示。トラブル発生時のデバッグに有効。-o response.txt: レスポンス内容をファイルに保存。
curlのトラブルシューティング
curlを使っていると、意図しないエラーに遭遇することがあります。以下に代表的なエラーとその原因、対処法をまとめます。
HTTP/1.1 500 Internal Server Error
- 原因: JSONの構文エラー(例: クォートの不一致、カンマ忘れ)
- 対処: JSONをバリデーションツールなどで検証しましょう。
Linuxユーザにお勧めの本
以上で本記事の解説を終わります。
よいITライフを!