2017-05-04 7 views
1

Clack環境でurlのクエリパラメータにアクセスするにはどうすればよいですか?Clack、LucerneまたはCavemanでurlクエリーパラメーターを取得する方法は?

彼らはquery-stringという名前のクラック*request*オブジェクト、であるように見えますが、私はそれらにアクセスする方法がわからない:クラックis not documentedthis docはその上明確ではありません。

ところで、スライムのデバッガで*request*を調べるにはどうしたらいいですか? 「CLACK:REQUEST」と表示されます。

Lucerneのdocまたはコードには何も表示されていません。with-paramsマクロが好きなので、残念です。

更新:これ以上検索しないでください。このマクロはうまく機能します。

ケイヴマンhas somethingしかし、一般的なケースは私には分かりません(私にはそれがa bit cumbersome(と私はルツェルンを試しています)です)。

+3

[clack.request](http://quickdocs.org/clack/api#package-CLACK.REQUEST)には、一般的な関数QUERY-PARAMETERがあるようです。私はクラックを使用していないか試してみましたが、うまくいくはずです。 [スライムインスペクタ](https://common-lisp.net/project/slime/doc/html/Inspector.html#Inspector)でオブジェクトを検査できるはずです。 – jkiiski

+0

彼らが助けてくれたリンクに感謝します。 (私はそれを得て、答えの下に詳細を与える) – Ehvince

答えて

2

Ningleでは、(lack.request:request-query-parameters ningle:*request*)を使用して、すべてのクエリパラメータを持つ関連付けリストを取得できます。それはあなたのために働くことがあります。

フレーム内のリクエストを調べるには、フレームにカーソルを置いたときに「i」を押して、ningle:*request*のような名前を入力します。私はそのような要求を見る:

#<LACK.REQUEST:REQUEST {100B2EDB73}> 
-------------------- 
The object is a STRUCTURE-OBJECT of type LACK.REQUEST:REQUEST. 
ENV: (:RAW-BODY #<FLEXI-STREAMS::VECTOR-INPUT-STREAM {100B2ED2D3}> :REQUEST-METHOD :GET :SCRIPT-NAME "" :SERVER-NAME "ws-dashb$ 
METHOD: :GET 
SCRIPT-NAME: "" 
PATH-INFO: "/some-path" 

そして、各スロットの値に潜り込むことができます。

おそらく最適化宣言に依存します。それでも問題が解決しない場合は、アプリケーションをロードする前に(declaim (optimize (debug 3)))と入力してください。

+0

詳細な説明をありがとう。それは私にとっては似ていた。私は 'lack.request'を持っていませんでしたが、' clack.request'と '* requert *'オブジェクトはlucerneによって与えられました:(clack.request:query-parameter lucerne:* request *) – Ehvince

+0

Ningle doc)を使用して、指定されたクエリパラメータにアクセスすることができます: ''(assoc "-query-param"(clack.request:query-parameter lucerne:* request *):test 'string =) '私はあるフレームワークがルツェルンの 'with-params'のようなヘルパーを提供することを願っています... – Ehvince

関連する問題