問題タブ [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 - Reader モナドを Scotty のモナドに追加するにはどうすればよいですか?
Scotty を使用して非常に単純な API を構築しようとしています。ルート ハンドラー アクションが不変の環境にアクセスできるように、Scotty モナドを拡張したいと考えています。これを行う方法は、Reader
モナドをスタックに追加することだと思います。Text
今のところ、いくつかのデータを渡したいだけです。
Scotty モナドを次のように拡張しました。
https://github.com/stu-smith/Brandy/blob/0838a63537d7e396ac82d58d460c6529349303d3/src/Core.hs
だから私の最初の質問は、これは正しいアプローチですか?
ルート ハンドラのタイプを正常に変更しましたが、このスタックを使用して Scotty を起動する方法がわかりません。私は次のことを試みました:
https://github.com/stu-smith/Brandy/blob/0838a63537d7e396ac82d58d460c6529349303d3/src/Main.hs
しかし、私はエラーが発生します:
2 つ目の質問は、別のモナド スタックで Scotty を起動するにはどうすればよいかということです。モナド変換子を使用するのはこれが初めての試みであり、絶望的に迷っているようです。
haskell - Scotty の ActionT の MonadReader インスタンス
私はタイプを持っています
私はこのための MonadReader インスタンスを作成しようとしていますので、尋ねる必要はありませんが、常に取得します
以下のいくつかのインスタンスタイプを試しましたが、常に上記のエラーが発生します
インスタンスで基本的な何かが欠けているように感じます。理解していると思いますFlexibleInstances
が、それがここでどのように適用されるかわかりません。
インスタンスタイプに関するヘルプをいただければ幸いです。実装ask
したいとlocal
思います。主な目標は学習です。
ありがとう。
アップデート
私はそれを使って動作させましFlexibleInstances, MultiParamTypeClasses, UndecidableInstances
た
まだローカルの実装に取り組んでいます。私もUndecidableInstances
悪いと思いますか?
更新 2
私は本当に必要なものだと思います。
しかし、私はまだ理解できませんlocal
mongodb - MongoDB を使用する Scotty
私は Haskell に比較的慣れていないので、モナド変換子を扱うのはこれが初めてです。助けていただければ幸いです。
Web フレームワークでmongodb
データベースにクエリを実行しようとしていますが、 . でデータベースに接続するには、これのインスタンスを作成する必要がありますか?scotty
MonadBaseControl
scotty
mongodb - Haskell: 接続の可用性を N 回遅らせてテストする (scotty から mongodb)
scotty Web アプリと mongodb サービスが正しい順序で開始されるというばかげた問題があります。systemd を使用して最初に mongodb を起動し、次に scotty Web アプリを起動します。何らかの理由で機能しません。connect: does not exist (Connection refused)
接続の準備ができていないことを意味する mongodb ドライバーからのアプリ エラー。
だから私の質問。接続の可用性を 0.5 秒間隔で 3 回テストしてからエラーになるようにするにはどうすればよいですか?
これはアプリケーションの主な機能です
アプリ サービスは mongodb サービスの後に注文されますが、アプリの起動中は mongodb への接続がまだ利用できません。したがって、上記のエラーが発生します。これは、正しいサービスの順序に関する質問を避けるための systemd サービス ファイルです。
正しいサービス順序で mongodb への接続が利用できない理由がわかりません。したがって、haskell コードを使用して接続の可用性を 0.5 秒の遅延で 3 回プローブし、その後エラーを発生させたいと考えています。どうすればいいですか?
ありがとう。
haskell - scotty でアップロードするファイルのサイズを制限するにはどうすればよいですか?
私は現在、Web 開発用の Scotty を検討していますが、今のところかなり良さそうです。ただし、最初にファイル全体を受信せずに、ファイル サイズが特定の制限を超えているファイルのアップロード (または任意の POST 本文) を破棄する方法がないように思われることを心配しています。https://github.com/scotty-web/scotty/blob/master/examples/upload.hsの例では、ファイル サイズの制限について言及されておらず、ドキュメントには何も見つかりません。
もちろんlength
、ByteString に対して実行することもできますが、ファイル全体が既にメモリに読み込まれるまで、それがどのように機能するかわかりません。
json - entityIdToJSON で Persistent の getJust を使用する際の問題
私は Haskell を初めて使用し、Persistent を ORM として使用して Scotty Web API を作成しようとしています。次のコードに問題があります。
このresource
関数は、公開したい永続モデル オブジェクトの Scotty Web ルートを定義します。
によって定義された最初のルートresource
は、コレクション全体を取得します。たとえば、HTTP GET
to/accounts
はすべてのアカウントを返します。
によって定義された 2 番目のルートはresource
、ID によって特定のエンティティを取得します。たとえば、HTTP GET
to/account/1
は ID 1 のアカウントを返します。
関数はそのまま機能しますが、デフォルトの json シリアライゼーションに id が含まれていないのが気に入らないためentityIdToJSON
、get all ルートで使用しました。
ただし、entityIdToJSON
get by id ルートに含めようとすると、 の行でS.json $ found
、次のタイプのエラーが発生します。
リソースに型制約を追加しようとしましたがEntity a
、事態が悪化しました。また、ハックに関するドキュメントを掘り下げてみましたが、読んでいるものすべてをよく理解していません。ドキュメントは、キーがそのキーとともにエンティティであることを示しているようです。
tl;dr - 私の問題は、エンティティを期待する Persistent の entityIdToJSON 関数で、Persistent の getJust 関数の結果である Key を使用しようとしていることです。
何か案は?
haskell - Scotty / wai を使用してプロキシの背後にあるときに実際の IP アドレスをログに記録する方法
これは私の scotty アプリです。リクエストをコンソールに記録する方法に注目してください。
私の scotty アプリは、プロキシ メカニズムを使用して nginx の背後で実行されます。これにより、scotty アプリは次のようにログに記録します。
REAL IP ADDRESSをログに記録したい。
Node.js/Express アプリで同じ問題が発生し、次のように解決しました。
Express.js: リモート クライアント アドレスを取得する方法
Scotty でこの問題を解決するにはどうすればよいですか?