Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

Fetch APIでPOSTリクエストを送信するには?

POSTリクエストは、データを更新したり、変更したりする時によく使われています。また、Fetchは非常に汎用されているAPIリクエストライブラリーとして、Fetch APIでPOSTリクエストを送信する必要があるユーザーは少なくありません。そこで本稿では、Fetch APIを用いてPOSTリクエストを送信する方法を解説します。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

POSTリクエストは、データを更新したり、変更したりする時によく使われています。また、Fetchは非常に汎用されているJavaScriptのAPIリクエストライブラリーとして、Fetch APIでPOSTリクエストを送信する必要があるユーザーは少なくありません。そこで本稿では、Fetch APIを用いてPOSTリクエストを送信する方法を解説します。

button

JavaScriptでのFetch APIとは

そもそもFetch APIとは何かを見に行きましょう。FetchはJavaScript でHTTP ネットワークリクエストを行うためのインターフェイスです。現在、Fetch APIは、iOSやAndroidなどのモバイルアプリ開発においてもFetchは必要不可欠なAPIとして使用されています。主に次のような特徴があります。

  • ブラウザとNode.jsの両方で利用できる
  • Promiseベースで書けるため非同期処理が扱いやすい
  • XHRよりコードがシンプルに書ける
  • レスポンスの本文をstreamで取得できる

基本的な使い方は下記のようになります。

fetch(url, options) 
  .then(response => {
    // responseを処理
  })
  .catch(error => {
    // エラーハンドリング
  });
  • urlにリクエストを送信したいエンドポイントを指定
  • optionsにリクエストのカスタマイズオプションを指定できる
  • レスポンスがPromiseを返すのでthenで受け取れる
JavaScriptのFetch APIとは、その使い方を解説!
Fetch APIとは、ブラウザ上のJavaScriptからHTTPネットワークリクエストを行うためのインターフェースとして、Webアプリケーションの開発でよく利用されています。本文では、Fetch APIの基本情報を皆さんに解説した上、Fetch APIの使い方をも詳しく皆さんに紹介します。Fetch APIを使ってみたいが、その使い方が分からない方は、ぜひ本記事を参照してください。

Fetch APIでPOSTリクエストの送信

Fetchは、ブラウザと互換性が良いJavaScript言語ベースのライブラリーとして、現在のブラウザにデフォルトで実装されているため、特にライブラリーをインストールしなくても、直接にブラウザがそれを実行できます。これにより、FetchがWeb開発で広く利用されています。

それでは、Fetch APIでPOSTリクエストを送信するには、どうしたらいいですか?

fetch()メソッドの2番目のパラメータにリクエストの詳細を指定します。

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data) 
})

ここで、リクエストボディにはJSONデータを設定しています。

FetchでPOSTリクエストのBodyデータを設定

Fetch APIでPOSTリクエストのボディを設定する際に利用できる主なデータフォーマットは以下の通りです。

  • JSON
  • FormData
  • x-www-form-urlencoded
  • Blob
  • ArrayBuffer
  • URLSearchParams

正常にリクエストを送信するには、ボディ内のデータフォーマットによって、Headerで適切なContent-typeを設定する必要がありますので、要注意!

FetchでJSONデータをPOST

Fetch APIでJSONデータをPostする場合は、次のように、Bodyで具体的なJSONデータを記述して、Bodyで「JSON.stringify(body)」を指定する必要があります。

const body = {
  name: 'John',
  age: 30 
};

fetch(url, {
  method: 'POST',
  body: JSON.stringify(body)
});

FetchでFormDataデータをPOST

FormDataでフォームデータを送信する場合、次のような実装コードになります。

const formData = new FormData();
formData.append('name', 'John');

fetch(url, { 
  body: formData 
});

FetchでバイナリデータをPOST

Blob形式を使うことで、バイナリデータを設定して送信できます。その実装コードは次:

const blob = new Blob([fileData]);

fetch(url, {
  body: blob
});

また、ArrayBufferはLowLevelなバイナリデータを扱えます。

FetchでURLSearchParamsをPOST

URLSearchParamsはGETのクエリ文字列のようにパラメータを設定できます。一方、x-www-form-urlencoded はフォームデータをHTTPリクエストボディに含めるための仕様です。形式は key1=value1&key2=value2 とクエリ文字列と同じですが、スペースは + で表され、一部の文字は % エンコーディングされる点が異なります。

URLSearchParams を使ってフォームデータを構築し、それを x-www-form-urlencoded 形式でエンコードして送信することができます。具体的には以下のようになります。

const formData = new URLSearchParams();
formData.append('key1', 'value1');
formData.append('key2', 'value2');

const body = formData.toString(); // 'key1=value1&key2=value2'

fetch('/path/to/server', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: body
})

URLSearchParams を使うと、フォームデータを構築する際に自動的にエンコーディングされるので、プログラマーが手動でエンコーディングする必要がありません。また、append() メソッドを使えば簡単にデータを追加できるメリットがあります。

上記のように、URLSearchParamsx-www-form-urlencoded 形式のデータを構築する際に便利なツールですが、必須ではありません。文字列操作で同じ形式を構築することも可能です。

このようにFetch APIでは様々なデータをPOSTリクエストのボディに設定して送信できるため、用途に応じたフォーマットを選択できる利点があります。

Fetch APIの実装コードの自動生成

Fetch APIの実装コードを書くのが面倒くさくて嫌だと思っているかもしれません。その場合は、使いやすいAPI管理ツールのApidogを使って、1クリックだけで、APIの定義書からFetch APIの実装コードを生成してくれます。

button

また、Apidogというツールは、非常に直感的なUIでAPIを簡単にテストすることもできるため、APIの疎通確認をした上、Fetchの実行コードを生成することで、作業の効率性もかなり向上できるのではないでしょう。

ステップ⒈Apidogで実装したいAPIをクリックして、右側パネルで「コード生成」にガーソルを置き、「クライアントコードを生成」を選択します。

Apidogクライアントコードの生成

ステップ⒉コード生成ウィンドウで、「JavaScript」を選択し、「Fetch」を選択すると、当該APIのFetch実装コードを生成してくれます。

Fetchの実装コードを生成
button

ApidogでFetch POSTリクエストの実装コードの生成例

次は、ApidogがAPIの定義や仕様に自動生成したFetchのPOSTリクエストの実装コードになります。

var myHeaders = new Headers();
myHeaders.append("User-Agent", "Apidog/1.0.0 (https://apidog.com)");

var urlencoded = new URLSearchParams();
urlencoded.append("name", "Hello Kitty");
urlencoded.append("status", "sold");

var requestOptions = {
   method: 'POST',
   headers: myHeaders,
   body: urlencoded,
   redirect: 'follow'
};

fetch("http://127.0.0.1:3658/m1/424554-0-default/pet", requestOptions)
   .then(response => response.text())
   .then(result => console.log(result))
   .catch(error => console.log('error', error));

現在のブラウザでもFetchライブラリーをプリーインストールされるため、日常的によく使われるChromeかFirefoxなどのブラウザのコンソールの中で、上記のFetch実装コードを直接に実装することもできますね。

まとめ

本記事では、Fetch APIを使ってPOSTリクエストを送信する方法について解説しました。Fetch APIはJavaScriptでのHTTP通信を実現するウェブ標準のインターフェイスです。Promiseベースの非同期設計が大きな特徴で、レスポンスデータもストリーム型で扱えます。また、POSTリクエストの送信にはfetch()に処理の詳細をオプションで指定します。ボディにはJSON、FormData、Blobなど複数のフォーマットを設定できます。

コード生成ツールのApidogを活用することで、API定義からいち早くFetchによる通信処理の実装が可能です。GUIベースで簡単にAPIを操作し、そこからコードを生成できるため大きなメリットがあります。

button

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法チュートリアル

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法

Clineを通じてGoogleのGemini 2.5 Proに無料でアクセスできることで、生産性を向上させ、複雑な問題解決に役立つ強力なAIアシスタントを提供。制約はあるものの、無料の利点は大きい。

中村 拓也

3月 28, 2025

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説チュートリアル

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説

このガイドに従えば、Cloudflareで高性能なMCPサーバーをデプロイし、拡張性、安全性、パフォーマンスを向上させることができます。すべての工程を詳細に解説します。

中村 拓也

3月 24, 2025

初心者必見!Playwright MCPで始める簡単エンドツーエンドテストチュートリアル

初心者必見!Playwright MCPで始める簡単エンドツーエンドテスト

Playwright MCPは簡素さと技術力でエンドツーエンドテストを革新します。UIとAPIの自動化が容易で、アプリの完璧な機能を保証します。Apidogと組み合わせて性能を強化し、さらにMCPの可能性を広げましょう。

中村 拓也

3月 24, 2025