OSS探訪GitHubでログイン

Trace・圧縮・timeoutなどHTTP向け機能をTower middlewareとして追加する

OSS規模スコア 211.8OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
920
主要言語
Rust
ライセンス
MIT
リポジトリ最終更新
2026/10/03
ページ内ナビ

概要

Tower HTTPはHTTP client/server向けのTower middlewareとutilityをまとめたRust libraryです。request/responseのTrace、圧縮・展開、redirect、timeout、static file配信などをTowerのService stackへ追加できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

HTTP request/responseへTrace・圧縮・redirectを追加する

READMEはTrace、Compression/Decompression、FollowRedirectを代表的なmiddlewareとして挙げています。HTTP処理の横断機能をhandler本体から分離し、Layerとして組み込めます。

出典:[2]

http crateを共通interfaceとしてframeworkをまたいで使う

middlewareはRustのhttp crateをinterfaceとして使うため、Hyperなど同じ型を利用するlibrary/frameworkと組み合わせられます。repositoryにはAxum、Tonic、Warpを使ったexampleもあります。

出典:[2][3]

向いている用途

Axum・Hyper系backendの共通HTTP policyをまとめたい場合に向く

logging、timeout、compression、sensitive header処理などをroutingやbusiness logicから切り離し、複数serviceで同じHTTP middleware stackを再利用したい構成に適します。

出典:[3]

導入前の確認

MSRVとServeDir・decompressionの挙動変更をupgrade時に確認する

READMEではMSRVはRust 1.65です。0.7.1ではServeDirのfilesystem I/O error伝播やrange request処理、decompressionのbody handlingに修正が入っているため、static file配信や圧縮bodyを使うserviceはupgrade時に回帰testが必要です。

出典:[2][4]

参考にした公式資料

  1. [1]tower-rs/tower-http — GitHub repository(2026-10-06)
  2. [2]Tower HTTP 0.7.1 — README(2026-10-06)
  3. [3]Tower HTTP 0.7.1 — Axum key/value store example(2026-10-06)
  4. [4]Tower HTTP 0.7.1 release(2026-10-06)
編集部からの補足

AxumなどのHTTP applicationへ観測・圧縮・timeoutといった横断処理を追加する用途で、個別実装を減らせます。利用するmoduleだけfeatureで有効化し、特にstatic file配信はrelease間の挙動変更を確認してください。

3ステップで試す

  1. 1

    確認済みのTower HTTPを取得する

    確認対象のTower HTTP 0.7.1を固定して取得します。Rust toolchainとCargoが必要です。

    git clone --depth 1 --branch tower-http-0.7.1 https://github.com/tower-rs/tower-http.git && cd tower-http
  2. 2

    Axum key/value store exampleを起動する

    公式exampleを起動します。Trace、timeout、compression、header処理を組み込んだHTTP serverが標準ではport 3000で待ち受けます。

    RUST_LOG=axum_key_value_store=trace,tower_http=trace cargo run --bin axum-key-value-store
  3. 3

    POSTとGETでmiddleware込みのHTTP flowを確認する

    別端末から値を保存して取得し、responseとserver側のTower HTTP traceを確認します。

    curl -fsS -X POST --data 'hello' http://127.0.0.1:3000/demo && curl -fsS http://127.0.0.1:3000/demo
公式READMEで確認

成長

成長の推移 · 直近30日

920 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
920
Forks
232
Watchers
21
Open Issues
40
Contributors
113
所有者種別
Organization
主要言語
Rust
ライセンス
MIT
リポジトリ最終更新
2026/10/03

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?