tower
https://docs.rs/tower/latest/tower/
GitHub.icon
https://github.com/tower-rs/tower
クラサバ
間の
ネットワーキング
における実装や処理を、柔軟かつ簡単に扱えるようにする
クレート
axum
で採用されている
タイムアウト
や
レートリミット
、認証、
ロードバランシング
など、HTTP サーバの構築に必要な要素を
Service
と
Layer
という抽象単位にして、プラグイン的に差し込むことを可能にする
この抽象単位を
ミドルウェア
と呼ぶ
tower::Service
https://docs.rs/tower/latest/tower/trait.Service.html
任意の
Request
を受け取り、任意の
Response
を返すことだけが定義された
トレイト
e.g.
ロギングや認証、リトライのための
ミドルウェア
tower::Layer
https://docs.rs/tower/latest/tower/trait.Layer.html
tower::Service
の
デコレータ
トレイト
複数の
tower::Service
で実行したい処理を登録することができる
名前の通り、何層にも重ねて 1 つの処理基板を作ることが可能
#Rust