我想在Compojure中定义一个资源:
(ANY "myres/:id" [id] (handler))
我希望:id是可选的(取决于是否指定了ID,我的API的行为会有所不同)。
如果我尝试访问
,这可以正常工作http://mydomain/myres/12
但是,如果我尝试访问
http://mydomain/myres
没有指定ID,我得到404。
有没有办法让参数:id是可选的?
谢谢!
答案 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)))