Compojure:可选的URL参数

Nic*_*tra 5 clojure compojure

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

(ANY "myres/:id" [id] (handler))
Run Code Online (Sandbox Code Playgroud)

我希望:id是可选的(取决于是否指定了ID,我的API将表现不同).

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

http://mydomain/myres/12
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试访问

http://mydomain/myres
Run Code Online (Sandbox Code Playgroud)

没有指定ID,我得到404.

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

谢谢!

Ank*_*kur 8

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

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

(defroutes my-routes
    (ANY "myres" [] (handler))
    (ANY "myres/:id" [id] (handler id)))
Run Code Online (Sandbox Code Playgroud)