Apidog

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

API設計

API仕様書生成

API設計

API Mock

APIテスト自動化

無料登録
Home / 観点 / Content-Typeとは|一覧と指定方法を解説

Content-Typeとは|一覧と指定方法を解説

Content-Typeは、HTTP通信において送信されるデータの種類を指定するための情報として、様々な場合それを利用する必要があります。そこで、本文では、Content-Typeの基本情報を皆さんに紹介した上、Content-Typeの種類及びリクエスト送信時の指定方法をも詳しく皆さんに解説します。

Content-Typeは、HTTP通信において送信されるデータの種類を指定するための情報として、様々な場合それを利用する必要があります。そこで、本文では、Content-Typeの基本情報を皆さんに紹介した上、Content-Typeの種類及びリクエスト送信時の指定方法をも詳しく皆さんに解説します。

button

Content-Typeとは

Content-TypeはHTTPヘッダの1つとして、クライアントとサーバーの間で送受信されるデータの形式を指定するのに使用されます。

主な用途は以下の通りです:

  • クライアントがリクエストのBodyに何の形式のデータを含めているかサーバー側に送信
  • サーバーがレスポンスのBodyに何の形式のデータを含めているかクライアント側に送信
  • データの形式を指定することで、それを適切にパース・処理できるようになる

Content-Typeを指定することで, クライアント・サーバー間で適切にデータを扱えるようになります。例えば以下のように指定します:

Content-Type: text/html; charset=utf-8

これはHTML形式のtextデータで、文字エンコーディングはutf-8であることを示しています。

よく利用するContent-Type一覧

Content-Typeの値には大きく分けて2つの部分があります。

  1. メディアタイプ (text, image, audio, videoなど)
  2. 文字エンコーディング (utf-8, iso-2022-jpなど)

Content-Typeの主な種類と用途の一覧表は以下のようになります。

種類 説明
text/plain プレーンテキストデータ
text/html HTMLデータ
text/css CSSデータ
text/javascript JavaScriptデータ
application/json JSON形式のデータ
application/octet-stream 任意のバイナリデータ(EXEなどの実行ファイル)
application/x-msgpack Messagepackデータ
application/xml XML形式のデータ
application/x-www-form-urlencoded HTMLフォームからのデータ
multipart/form-data ファイルを含むフォームデータ
image/gif GIF画像データ
image/png PNG画像データ
image/bmp 汎用BMP画像データ
image/x-ms-bmp MS BMP画像データ
image/jpeg JPEG画像データ
image/svg+xml SVGファイル
audio/wav WAV音声データ
audio/mp3 MP3音声データ
video/mpeg MPEG動画データ
video/mp4 MP4動画データ
application/pdf PDFドキュメントデータ
application/msword Wordドキュメントデータ
application/vnd.openxmlformats-officedocument.wordprocessingml.document Wordドキュメントデータ(.docx 2007以降)
application/vnd.ms-excel Excelドキュメントデータ
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Excelドキュメントデータ(.xlsx 2007以降)
application/vnd.ms-powerpoint PowerPointドキュメントデータ
application/vnd.openxmlformats-officedocument.presentationml.presentation PowerPointドキュメントデータ(.pptx 2007以降)
application/octet-stream 任意のバイナリデータ
application/gzip Gzip圧縮データ
application/zip ZIP圧縮データ
application/x-lzh LZHファイル
application/x-tar tarファイル/tar&gzipファイル

*https://qiita.com/AkihiroTakamura/items/b93fbe511465f52bffaaより一部参照

上記のように、文字エンコーディングも合わせて指定する必要があります。この表を参考に、データの形式に応じて適切なContent-Typeを設定して利用しましょう。

APIでContent-Typeの活用

APIではリクエストとレスポンスのBodyにJSONやXMLなどのデータ形式を用いることが多いです。

この場合、Content-Typeを適切に設定することで、クライアントとAPIサーバーがデータ形式を正しく理解できるようになります。

  • クライアントはリクエストBodyにJSONデータを含める場合、Content-Typeをapplication/jsonに設定
  • APIサーバーはレスポンスBodyにXMLデータを含める場合、Content-Typeをapplication/xmlに設定

このようにContent-Typeを設定することで、次のようなデータ処理を行うことが可能になります:

  • クライアントはBodyがJSONであることを認識して適切にパースできる
  • サーバーはBodyがXMLであることを認識して適切にパースできる

また、Content-Typeを設定しないとクライアント・サーバーがデータ形式を正しく解釈できないため、意図しない動作をしたりエラーが発生する可能性があります。

このため、APIではリクエストとレスポンスのBodyに何のデータを含めているかを明示するContent-Typeの設定が重要です。APIの仕様書などにContent-Typeの記載がある場合は、それに従って適切に実装する必要があります。

どこかでContent-Typeを設定する必要がある?

クライアントとサーバーの間で、データ通信を行う際に、API仕様に従って、複数箇条でContent-Typeを設定する必要があります。次は、Content-Typeの設定が必要となる主な場所を皆さんに紹介します:

HTTPリクエストのヘッダ

クライアントがリクエストBodyに含めるデータの形式をサーバーに伝えるために設定します。

HTTPレスポンスのヘッダ

サーバーがレスポンスBodyのデータ形式をクライアントに伝えるために設定します。

HTMLの<form>タグ

フォームから送信するデータの形式を指定します。

Ajax通信のコード

JavaScriptのXMLHttpRequestやfetch APIを使用する場合に、リクエストBodyのデータ形式を指定します。

APIのクライアントコード

外部APIを呼び出すためのライブラリやコードでは、リクエストBodyのデータ形式を明示的に設定します。

APIのサーバーコード

レスポンスBodyで返すデータの形式をHTTPヘッダに設定して返信します。

アップロードフォーム

ファイルアップロードフォームでは、送信するファイルの種類を指定します。

メールの送信コード

メール本文の内容形式(HTMLやプレーンテキスト)を指定します。

これらの場合において、適切なContent-Typeを設定することで、データの送受信がスムーズに行えるようになります。

Apidog:APIテスト時にContent-Typeの設定が楽々に

Apidogは、非常に使いやすいAPI管理ツールとして、APIのテスト時に、HeaderやBodyタブで簡単にContent-Typeを設定することができます。Bodyにデータを格納してAPIリクエストを送信したり、サーバーから返されるレスポンスのデータ形式を指定したりするためにも、Apidogは重宝なツールになると思います。

button

ステップ⒈Apidogを開いてAPIをテストする時に、「Body」タブに切り替えて、サーバー側に送信したいデータを追加することができます。ここで、JSON、XML、from-dataなどよく使われるContent-Typeがリストされているので、それをクリックすると、それぞれのContent-Type設定が自動的にHeaderタブに追加されますので、非常に便利です。

BodyでContent-typeを指定

ステップ⒉また、ここで使用したいContent-Typeが見つからない場合は、Headerタブに切り替えて、自分でContent-Typeを指定することも可能です。また、サーバーからレスポンスのデータ形式を指定するために、AcceptフィールドでContent-Typeを指定することも可能です。

HeaderでContent-typeを指定

このようにして、APIテストの際には、Apidogを使うことで、非常に直感的なUIでContent-Typeを指定することができますので、APIテストがこれまでにないほど便利になるのでしょう。

まとめ

この記事は、HTTP通信におけるContent-Typeについて詳しく解説していました。Content-Typeは送受信されるデータの形式を指定するヘッダ情報で、主にリクエストとレスポンスのBodyに含まれるデータの種類を表します。

APIを利用する場合、JSONやXMLなどのデータ形式をリクエストとレスポンスでやり取りすることが多く、その際にはContent-Typeの適切な設定が重要となります。リクエストとレスポンスのヘッダ、HTMLのformタグ、Ajax通信など、様々な場面でContent-Typeを指定する必要があるため、APIの仕様に従って実装することが大切です。

また、APIテストツールのApidogを使えばUIから簡単にContent-Typeを設定できるなど、APIテストが便利になります。

button

Apidogのニュースレターを購読する

今すぐ購読すると、いつでもApidogから更新情報と最新観点を手に入れることができます。