6

我想在 Compojure 中定义一个资源,如下所示:

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

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

如果我尝试访问,这可以正常工作

http://mydomain/myres/12

但是,如果我尝试访问

http://mydomain/myres

没有指定 ID,我得到 404。

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

谢谢!

4

1 回答 1

9

如何创建 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)))
于 2013-04-06T16:29:30.050 回答