は、タイプApplication -> Application
です。あなたはMiddleware
にsomeApplication
を有効にする のであれば、あなたが を行うことができます方法は、それは次のようになります。
staticMiddleware :: Middleware
staticMiddleware = \app -> someApplication
あなたはApplication
ある引数を捨てて、あなたが望む アプリケーションを返し、そして今、あなたはMiddleware
を持っています!
おそらくあまり役に立たないでしょうMiddleware
。あなたはそれを処理する方法を理解するために、 リクエストを見たいでしょうか?同様に、この静的サーバーミドルウェアは を処理する要求がありますが、その他のものは通常のサーバーで処理するために になりますか?
はたぶん、あなたはこのような何かを行うことができます:
someMiddleware :: Middleware
someMiddleware = \app -> branchingApp
branchingApp :: Application
branchingApp req functionReqToRecieved =
if iWantToStaticServeThis req
then staticApp req functionReqToRecieved
else dynamicApp req functionReqToRecieved
これはひどいコードはそれほどコピーしないでくださいですが、私はそれは全体のアイデアを取得します願っていますか?
Application
は、関数:Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
です。私は最初の引数(要求)を のように使う方法を述べたいと思います。したがって、この Middleware
の代わりに 自身のApplication
を作成しています。これはちょうどRequest
を見て、が処理する を決定します。その後、引数 をApplication
に返します。
でもこれを行うどこかのヘルパー機能があるかもしれませんが、わかりません。
(私はあなたがすでに答えを見つけたのを見ましたが、私はこれを草稿に入れましたので、将来誰かに役立つ場合に備えて投稿しました) – Libby
ありがとう、 :) – adamse