2017-05-04 32 views
1

我们如何在Clack环境中访问url的查询参数?如何在Clack,Lucerne或Caveman中获取网址查询参数?

看起来他们是在一个瓣*request*对象,命名为query-string,但我不知道如何访问它们:瓣is not documentedthis doc并不清楚这一点。

顺便说一句,如何探索粘液调试器中的*request*,而我正在休息呢?它只打印为“CLACK:REQUEST”。

我在卢塞恩的doc或代码中什么也看不到,而这很遗憾,因为我喜欢它的with-params宏。

更新:不要搜索更多,这个宏的作品非常好!

穴居人has something但常见的情况是不是很清楚我(有些发现像我这是a bit cumbersome(我正在尝试卢塞恩))。

+3

[clack.request](http://quickdocs.org/clack/api#package-CLACK.REQUEST)中似乎有一个通用函数QUERY-PARAMETER。我没有使用过或尝试过,但它似乎应该工作。您应该可以使用[slime inspector](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 *'对象是由卢塞恩给出的:'(clack.request:query-parameter lucerne:* request *)' – Ehvince

+0

, doc,以访问给定的查询参数:'(assoc“the-query-param”(clack.request:query-parameter lucerne:* request *):test'string =)'。我希望有一个框架可以提供帮助,比如卢塞恩的“带参数”...... – Ehvince