◉ Rackとは??
Web Server <---> Rack <---> Web Framework
サーバとフレームワークを結ぶインタフェースを指します。
RailsもSinatraもPadrinoも全ては、Rackの土台上で出来ている。
Rackアプリケーションは、引数を1つ取り3つの値を返すcallを呼び出すことができるオブジェクトであると定義されており、Rack protocolと呼ばれる仕様を満たすことが期待されている。
1.Status Code
(to_iされた場合に、100以上の数字になること。HTTPステータスコードになる。)
2.Response Header
(eachできて、keyとvalueをyieldすること。HTTPレスポンスヘッダに使われる。)
3.Response Body
(eachできて、Stringをyieldすることと。HTTPレスポンスボディに使われる。)
Unity で WWW や UnityWebRequest などの機能を使って HTTP リクエストする際、Cookie を操作することができなくてセッションの維持に困ったので、サーバー側で以下の Rack middleware を作って使うことで問題を解決しました(Unity で Cookie 対応のアセットを使うとか他にもいろいろやりようはあると思いますが、今回はそうしなかった)。
◉ Rack Middleware
サーバーとフレームワークの間で実行したい処理を定義する。
##Rackアプリケーション
Rackアプリケーションは、引数を1つ取り3つの値を返すcallを呼び出すことができるオブジェクトであると定義されており、Rack protocolと呼ばれる仕様を満たすことが期待されている。
RailsやSinatraで書くアプリケーションがこれに属する。
Rack protocolに定義されているcallの引数や返り値の具体的な内容は以下の通りである。