問題タブ [haskell-wai]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
233 参照

haskell - Wai リクエストから Yesod ルートに移動するにはどうすればよいですか?

Wai HttpAuth ミドルウェアを使用して、いくつかのページを HTTP 基本認証の背後に隠したいと考えています。このために、HttpAuth ミドルウェアが提供しますauthIsProtected :: !(Request -> IO Bool)

実装するauthIsProtectedには、URL が管理者専用かどうかを確認する必要があります。これを行う最善の方法は、ファイルにルート属性を作成し、次の関数を使用してそれらにアクセスすることです。routesrouteAttrs :: RouteAttrs a => Route a -> Set Text

ただし、関数内の aRouteにはアクセスできずauthIsProtected、 Wai だけにアクセスできますRequest。WaiRequestから に移行する方法はありRouteますか? Yesod は内部でこれを行う必要があると思いますが、どこでどのように行うのかわかりませんでした。

isAuthorized代わりに、にアクセスできる場所で認証を行う必要がある可能性がありますRouteが、そこから HTTP 基本認証を実行できるかどうかはわかりません。

編集:これが私が思いついたものです:

0 投票する
1 に答える
991 参照

haskell - Haskell WAI で、ヘッダーをミドルウェアとして追加するにはどうすればよいですか?

非常に単純なセッション マネージャーを作成して、ミドルウェアを理解しようとしています。

SetCookie応答にヘッダーを追加する必要があります。wai-extraパッケージを見て、見つけましwai-sessionた。

私は wai-3.0.2 を使用していますが、Response の型コンストラクターに直接アクセスできないようです。パターン マッチを見つけたすべての例で、Response(..)ヘッダーを追加しています。

正しい方向に私を向けることができますか?

0 投票する
0 に答える
149 参照

haskell - 非アクティブ後にHaskell websocketが閉じますか?

接続を開いた後、次のようなスニペットがあります

イベントがクライアントから送信された場合、このコードは機能しますが、非アクティブな接続が閉じられた後、クライアント (web javascript) 接続が閉じられたときにエラーが発生します (websockets の onclose が呼び出されます)。一定の非アクティブ後に Websocket は閉じますか。また、これがメインスレッドにある場合、正常に動作しますか?

0 投票する
3 に答える
551 参照

haskell - WAI でリクエストの本文とヘッダーのサイズを制限するにはどうすればよいですか?

ScottyともちろんWAIを使用してアプリケーションを開発しています。本文の長さとヘッダーの両方について、リクエストのサイズを制限できるようにしたいと考えています。どうやってやるの?プレーンな WAI ミドルウェアを使用してそれを行うことは可能ですか?

0 投票する
1 に答える
268 参照

haskell - 「IO」が問題を引き起こさずに WAI でリクエスト パラメータを使用する

WAI を使用して API を起動および実行するための基本に苦労しています。IO主な問題は、すべての感染に対処することです。モナドをよりよく理解すれば、私の問題は解決すると思いますが、この質問に対する答えが良い出発点になることを願っています。

/api/my-data以下は、ルート URL で静的な html ページを提供し、対応するユーザーのデータを返すユーザー名を持つリクエストを受け入れる短い例です。マップ ルックアップを実行し、データを取得し、結果を json にエンコードして送り返すIO Bytestringリクエストの使用方法がわかりません。body

を使用fmapして抽出しBytestring、それunpackを検索用の文字列に変換しようとしましたが、何をしても、いまいましいIOモナドに関連する型エラーを追跡することになります。

とにかく、ここに関連するコードがあります:

これにより、次のエラーが発生します。

andの型をgetUserInfoandmyDataに簡単に変更できますが、型エラーが増えてしまいます。タイプは私の頭をぐるぐるさせています。IO Bytestring -> IO (Map.Map String String)IO (Map.Map String String) -> Response

0 投票する
2 に答える
209 参照

haskell - WAI ハンドラー内のデータベースと通信する際の IO によるエラーの回避

warp、wai、acid-state を使用して Haskell で Web サービスを作成しています。現在、データベースとの対話を必要とする 2 つのハンドラー関数があり、後者は私に問題を引き起こしています。

1 つ目は、登録です。

ご覧のとおりIO、 で更新を実行することで、応答への感染を回避することができましたlet _ = ..

ログイン関数 (現在はユーザー マップのみを返す) では、IO実際に応答で結果を返す必要があるため、 を避けることはできません。

これにより、次のエラーが発生します。

エラーは、値を返す db クエリが原因であると考えられIOます。私が最初に考えたのはResponse、型シグネチャを に変更することでしたIO Responseが、最上位の関数は、Responseではなく が必要であると不平を言いましたIO Response

同様に、次のように書きたいとregisterUser思います。

しかし、これは非常によく似たエラーを引き起こします。

registerUser完全を期すために、 andを呼び出す関数を次に示しますloginUser

これらの IO エラーを回避するにはどうすればよいですか?

0 投票する
1 に答える
2759 参照

haskell - Servant / Wai で静的ファイルを提供する

このチュートリアルhttp://www.parsonsmatt.org/programming/2015/06/07/servant-persistent.htmlに従って、サーバントを介して API を作成しています。サーバーをカスタマイズして静的ファイルも提供したいのですが、それを行う方法が見つかりませんでした。

stackビルドツールを使用しています。

Main.hsファイルの実行をstatic( ) を含むように変更し、run port $ static $ logger $ app cfgインポートしNetwork.Wai.Middleware.Static (static)ました。wai-middleware-static >=0.7.0 && < 0.71また、cabal ファイルに追加しました。

実行すると、次のようstack buildになります: (更新: この部分は完全に私のエラーです。パッケージを間違った cabal ファイルに追加しました..ラメ. Network.Wai.Middleware.Static のインポートは機能し、静的ファイルを提供します。場合に備えて、以下のエラーを残します誰もがそれを検索し、役に立つと思います。)

次に、サーバントserveDirectoryを次のように使用してみました (簡略化):

次のエラーが表示されます。

私は Haskell の初心者で、Wai に慣れていないため、どこから始めればよいかわかりません。静的ファイルを提供するためにブログ投稿のサンプル コードを作成するには、どのような変更が必要ですか?

編集:コメントはデフォルトのビューから非表示になるため、最後のコメントをここに貼り付けます:

これは、Matt のブログのコードのトーンダウン バージョンです。彼のすべてのモジュールを単一のファイルに統合し、すべてのデータベースのものを削除しましたが、拡張機能/インポートをクリーンアップしませんでした. このコードを実行すると、上記のタイプの不一致エラーが発生します。このコードは Network.Wai.Middleware.Static を使用せず、Servant StaticFiles の限定インポートを使用していることに注意してください。