問題タブ [ring]
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.
clojure - Compojure /Ringでhtmlリクエストとxhr/xml / jsonリクエストを区別する方法は?
Railsのrespond_toと同様に、Compojure /Ringでhtmlとxhr/xml / jsonのリクエストを区別する方法は?
http://apidock.com/rails/ActionController/MimeResponds/respond_to
clojure - Railsのurl_forと同様の機能をClojureとそのWebフレームワークでどのように実装しますか?
私はClojureを使用して、現在Ring、Mustache、Sandbar、Hiccupを使用してWebアプリケーションを開発しています。jobという名前のリソースと、このように定義された特定のジョブのマルチステップ形式で特定のステップを表示するルートがあります(簡単にするために他のルートは省略されています)。
コントローラがレンダリングするビューには、同じジョブ内の他のステップへのリンクがあります。現時点では、これらのURLは手動で作成されてい(str "/job/" id step)
ます。"/job/"
口ひげのルートで定義したものを繰り返すので、URLのハードコードされた部分は好きではありません。ルートを変更する場合は、コントローラーを変更する必要があります。これは、私が気にかけているよりも緊密な結合です。
RailsのルーティングシステムにはパラメータからURLを生成するメソッドがあることを知っています。同様の機能があればいいのにと思います。つまり、次のurl-for
ように呼び出すことができる関数があればいいのにと思います。
これを簡単にするClojureWebフレームワークはありますか?そうでない場合、これをどのように実装できるかについてどう思いますか?
clojure - Clojure / Compojure / RingでマップをURLクエリ文字列に変換するにはどうすればよいですか?
Clojure / Compojureで、マップをURLクエリ文字列に変換するにはどうすればよいですか?
に
compojureでこれを行うためのユーティリティメソッドはありますか?
clojure - clojure / lein / ring:2つのリングハンドラーが異なることを実行していますが、これをサーブレットにラップするにはどうすればよいですか?
異なるポートで実行されている2つの異なるアプリ/ハンドラー(1つはAPI用、もう1つはWebフロントエンド用)を持つclojure/ringプロジェクトがあります。それらは多くのコードを共有しますが、それぞれに独自の名前空間があり、そのインターフェイスに固有のすべての作業を実行します。これを、Tomcatなどで実行されているサーブレットとしてデプロイしたいと思います(実際には、任意のサーブレットコンテナで動作する必要があります)。しかし、lein-ringは、サーブレットにハンドラーが1つしかないことを前提としているように見えるため、問題が発生しています。たとえば、私のproject.cljには、次の行があります。
これはAPIには最適ですが、フロントエンドについてはどうでしょうか。独自のハンドラーとサーブレットを持つことができるように、これを含む別のプロジェクトを作成する必要がありますか?サーブレットは常に1つのポートで実行されますか?
基本的にわからないことが2つあります。Javaのバックグラウンドを持っていないため、サーブレットアプローチで何が起こっているのか、どのような制限があるのかがわかりません。また、clojureがどのように正確に変換されるのかわかりません。このプロジェクトを一般的な方法で構造化するのに十分なサーブレットパラダイム。
どんな助けでもありがたいです、ありがとう!
clojure - 運用リング クロージュア サーバーでのコードのリロード
JVM全体を再起動せずに新しいコードをプロダクションリングサーバーにプッシュする最良の方法は何ですか?
現在、本番環境で wrap-reload を使用していますが、リングが新しいコードでリクエストの処理を開始する前に、repl でコマンドを実行したい場合があるため (データベースの移行など)、これはうまくいきません。また、さまざまなブログやチュートリアルで、本番環境で wrap-reload を使用しないようにと書かれていますが、その理由はわかりません。
私は次の解決策を思いつきましたが、内部で何が起こっているのかを深く理解していないことを告白します. 誰かが健全性チェックを受けられるかどうか疑問に思っていました。このテクニックは合理的ですか?
アイデアは、すべての clojure コードをリロードさせるパス (/admin/reload-clj) を持つことです。
jar - clojure/lein: project.clj 以外の lein のプロジェクト ファイルを指定できますか?
1 つのプロジェクトから生成したい jar ファイルがいくつかあります。それぞれに project.clj ファイルを作成できると思いますが、すべてに project.clj という名前を付けることはできません。project.clj 以外の別のプロジェクト ファイルを使用するように lein に指示するにはどうすればよいですか? または、jar を生成または開始する別の方法はありますか
たとえば、同じディレクトリにある多くの異なるプロジェクト ファイルの場合は?
ありがとう!
clojure - clojure / ring / jetty:>leinリングサーバーを使用しています。インスタンス化される桟橋インスタンスを構成するにはどうすればよいですか?
桟橋ハンドラーを直接呼び出していたとき、次のようなコンフィギュレーターを渡すことができました。
投稿時にFULLHEADエラーが発生し続けたため、これを行う必要がありました。ここで、コマンドラインから呼び出される> leinringserverを直接使用するようにリファクタリングしました。
これは、私のproject.cljで指定されたいくつかの構成を使用します。
これはうまく機能しますが、今度はFULLHEADの問題が再び発生します。そこで私はそこにコンフィギュレーターを追加しようとしました:
そして、これはこのスタックトレースで失敗します:
これは、関数をそのようにマップに直接配置することと関係があると考えたので、プロジェクトの外部(caribou.api.core)で定義し、他の場所で定義されている残りの関数と同じように参照してみました。
これでアプリが起動しますが、投稿時に413:FULLHEADエラーが発生します。何か案は?ありがとう!
session - 暗号化されたCookieセッションストアの代わりにメモリ内セッションストアを使用する理由
私が読んでいる:
https://github.com/mmcgrana/ring/wiki/Sessions
だから今私は疑問に思っています:なぜ暗号化されたCookieセッションストアの代わりにメモリ内のセッションストアを使用したいのですか?
後者は(1)サーバーのメモリを浪費せず、(2)メモリ内のストアよりも長く存続できるようです。
したがって、私の質問:なぜ/いつメモリ内ストアを使用したいのですか?
ありがとう!
clojure - 1 つの lein タスクで複数のリング サブプロジェクトを開始するにはどうすればよいですか?
次のような 3 つのサブプロジェクトを含むプロジェクトがあります ( lein-subを使用):
それぞれの内部に次のようなリング ハンドラーがあります。
今、私はそれぞれに行き、次のように入力します:
これは明らかに疲れます。私も試しました
これは機能するはずですが、最初のものを開始するだけで、プロセスがそれに参加します! おそらくそれを回避する方法はありますか?これが最も簡単なアプローチのようです。
その代わりに、これを行うための leiningen タスクを作成していますが、いくつかの問題が発生しています。leiningen.core.project/read を使用して、それぞれのプロジェクト ファイルを簡単に取得できますが、ここから、それぞれの project.clj ファイルのすべての依存関係とその他の設定を尊重する方法で各リング サーバーを起動するにはどうすればよいでしょうか?
何か案は?
ajax - 外部の http リクエストをブロックするには? (AJAX 呼び出しの保護)
post を使用してデータベースを更新したいのですが、手動で行う必要はありません。つまり、クライアントで AJAX を介してのみ可能にする必要があります。このシナリオで使用できるよく知られた暗号化トリックはありますか?
のデータベースに新しいユーザーを挿入するために GET 要求を発行しているとしますsite.com/adduser/<userid>
。誰かが偽のリクエストを発行して、私のデータベースを過密にする可能性があります。