Compojure:可选的URL参数

时间:2013-04-06 16:15:07

标签: clojure compojure

我想在Compojure中定义一个资源:

(ANY "myres/:id" [id] (handler))

我希望:id是可选的(取决于是否指定了ID,我的API的行为会有所不同)。

如果我尝试访问

,这可以正常工作
http://mydomain/myres/12

但是,如果我尝试访问

http://mydomain/myres

没有指定ID,我得到404。

有没有办法让参数:id是可选的?

谢谢!

1 个答案:

答案 0 :(得分:8)

如何创建2个不同的路由,一个是id而另一个没有它,并从两个路由调用你的处理程序,如下所示:

(defn handler
    ([] "Response without id")
    ([id] (str "Response with id - " id)))

(defroutes my-routes
    (ANY "myres" [] (handler))
    (ANY "myres/:id" [id] (handler id)))