0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Web APIシリーズその4(全5回):一歩先行くHTTP・ヘッダを知ろう

Last updated at Posted at 2025-03-05
1 / 11

HTTPのURLとメソッド以外の要素

  • ボディ
  • ヘッダ:とんでもなく多彩
    HTTPを深く知るには必須の、実に楽しい要素

HTTPヘッダとは

  • リクエストとレスポンスそれぞれに存在する
  • クライアントからは、リクエストのヘッダで様々な情報を伝える
  • サーバからは、レスポンスのヘッダで様々な情報を伝える

ブラウザの挙動

  • ブラウザはHTTPレスポンスのヘッダを見て、どう動作するかを判断している
    他のURLにリクエスト投げ直し
    ローカルキャッシュを表示
    ブラウザでは処理できないのでファイルとしてダウンロード
    など・・・

実際の通信のヘッダ内容を見る

  • F12ツールのNetworkタブ
    超!重要!

よく見るヘッダ:content-type

  • ボディのデータの形を伝える
  • リクエストにもレスポンスにも使う
  • APIではapplication/jsonを使うのがデファクト
  • たまにmultipart/form-dataapplication/x-www-form-urlencodedを見かける(特にリクエスト)

よく見るヘッダ:X-Api-Key

  • APIキーを設定する場合によく用いられる
  • content-typeと共に、プログラマが頻繁に設定するHTTPヘッダ

キャッシュに関するヘッダ:ETag

  • Etagの値が同じの場合はコンテンツに変化がない!
    →初回はボディと共にETagを返してもらう
    →2回目以降はETagの値のみ要求
    →値が変わっていなければキャッシュを使ってよいということになる
    →値が変わっていれば改めてコンテンツを取得「

大きなファイルを扱う際:Range

  • コンテンツの何バイト目から何バイト分欲しい、というリクエスト
  • 対応していないサーバもある
  • 動画のストリーミング再生で有用

事例)iOSアプリでのローカルWebサーバ
Rangeに対応しているライブラリでないと動画再生が出来なかった!


圧縮アルゴリズムの指定:Accept-Encoding

  • content-typeに指定された形式のデータを圧縮してボディに収めることが出来る
  • gzipが一般的な気がする

最後に

  • HTTPヘッダは非常に多彩でとてもではないが語りきれない
  • APIを呼び出すときに、ヘッダに要件がある場合がある
    ヘッダについて少しでも知識があると、呼び出しがうまくいかない場合の解決の糸口になるケースがある
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?