問題タブ [scotty]
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.
haskell - ハンドラーごとのリーダー用の Scotty モナド トランスフォーマー
質問Web, Scotty: connection pool as monad readerScottyT
では、モナドをスタックに埋め込んでReader
静的構成 (この場合は接続プール) にアクセスする方法が示されています。
同様の質問がありますが、もっと単純です – または、少なくとも私はそう思いました…</p>
アプリ全体ではなく、Reader
単一のハンドラー (つまり a ) に aを追加したい。ActionT
上記の質問からプログラムの変更を開始しましたが、必要なハンドラーに をActionT Text (ReaderT String IO)
変換する方法がわかりません。ActionT Text IO
これを構築する方法を知りたいと思って、手探りして型付きの穴を使用しようとした後、私は今のところあきらめて助けを求めなければなりません。これは単純であるべきだと本当に感じていますが、これを行う方法がわかりません。
これがプログラムです。私が立ち往生している行が強調表示されています。
haskell - Haskell Scotty Webserver がテキスト応答を送信する
GET リクエストを受け取り、それに対する応答としてテキスト メッセージを送信したいと考えています。次のコードがありますが、次のエラーが表示されます。
サーバーを実行しようとすると発生するエラーは
haskell - Haskell でモジュールを動的にインポートする
Scotty ベースのアプリケーションを構築しており、ディレクトリに含まれる動的ミドルウェアのリストをインポートして追加しようとしています。
ミドルウェアのリストをハードコーディングしたくありませんが、現在のところ、Index.hs
すべてのディレクトリミドルウェアを公開するを使用しています。
私が持っているとしましょうMain.hs
次にControllers/Index.hs
:
それぞれControllers/*.hs
にミドルウェアが含まれています。
を取り除く最良の方法は何Controllers/Index.hs
ですか? ディレクトリからすべてのモジュールをインポートして、作業できるリストを取得する方法はありますか?
haskell - Scotty または Yesod で別のソケット接続を開く方法は?
IRC ネットワークに接続する (ソケットを開く) 必要があり、Web アプリもホストするアプリケーションを構築しています。一部のデータは、IRC パーツと Http パーツの間で共有する必要があります。Haskell でそのような同時実行性を実現する最善の方法は何ですか? Control.Monad.STM
これを実装するために使用する必要がありますか?これは Web フレームワークもサポートすべきものですか、それとも Scotty を開始する前に fork することは可能ですか?
haskell - ネストされたサブディレクトリを Scotty RoutePattern と一致させる
Scotty Web サーバーでいくつかの静的ファイルを提供しています。サブディレクトリに配置することもできます。私の現在のアプローチは次のようになります。
単一のパターンのみを使用して、ディレクトリのネストの深さが異なるパスを一致させる可能性はありますか?
haskell - Scotty でコンパイル時にルートを動的に追加する
Template Haskell またはその他の方法を使用して、構成ファイルを介してコンパイル時にルートを動的に追加することは可能ですか?
Scotty には関数addRouteがありますが、動的に使用したいと考えています。
例
sampleRoutes 配列を繰り返し処理し、コンパイル時にルートと応答を定義したいと考えています。
haskell - Scotty を使用したネットワーク I/O のスループットが予想外に低い
Scotty のベンチマークを実行して、ネットワーク I/O の効率と全体的なスループットをテストしようとしました。
このために、Haskell で記述された 2 つのローカル サーバーをセットアップしました。何もせず、単に API として機能するもの。
同じコードは
このサーバーを呼び出して応答を返す別のサーバーを作成しました。
これらの両方のサーバーを実行して、wrkベンチマークを実行したところ、非常に高いスループットが得られました。
これは、Phoenix などの他の Web サーバーよりも大幅に高かったのですが、応答の大部分がファイル記述子の枯渇により発生した 500 エラーであったため、これは何の意味もないことに気付きました。
かなり低い制限を確認します。
これらの制限を
もう一度 wrk を実行したところ、明らかに十分なスループットが大幅に低下していました。
500 エラーの量は減少しましたが、完全にはなくなりませんでした。Ginと Phoenix のベンチマークScotty
を行ったところ、500 の応答がない場合よりもはるかに優れていました。
欠けているパズルのピースは何ですか? デバッグに失敗している問題があると思われます。
http-conduitはこれらのエラーと多くの関係があり、http-client
ライブラリはフードの下でそれを使用しており、これは とは何の関係もないことを理解していScotty
ます。
json - BSON を JSON に変換し、API レスポンスとして送信 Haskell
私は初めての Haskell Web アプリに取り組んでおり、BSON ドキュメントを JSON に変換してから API 応答として送信する際に問題が発生しています。現在、AesonBson
パッケージを使用して BSON を Aeson に変換してObject
いますが、その AesonObject
を JSON API 応答として送信する方法がわかりません。
私のサーバーのルートハンドラーの例を次に示します。
これらは単純なはずです -をgetAllDocuments
返しIO [Document]
、次にaesonfy
ドキュメントのリストをマッピングしてから、JSON サーバーの応答として返そうとします。
問題は、このNo instance for ToJSON
エラーが発生し続けることです:
私が見逃しているものはありますか?aesonify
Aeson を返すように見えますObject
... のインスタンスではないToJSON
でしょうか? どんな助けでも大歓迎です。私はしばらくの間、これで車輪を回転させてきました。Aeson のobject
関数を別の場所に配置して、ドキュメントを のインスタンスとして手動で追加しようとしましToJSON
たが、実際にはこれを理解できません。