【问题标题】:Compojure: optional URL parameterCompojure:可选的 URL 参数
【发布时间】:2013-03-29 00:00:33
【问题描述】:

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

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

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

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

http://mydomain/myres/12

但是如果我尝试访问

http://mydomain/myres

不指定 ID,我得到 404。

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

谢谢!

【问题讨论】:

    标签: clojure compojure


    【解决方案1】:

    如何创建 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)))
    

    【讨论】:

    • 感谢您的解决方案,我一定会申请!很遗憾 :id 参数默认不被视为可选。我不喜欢必须定义两条路线的想法,特别是如果我有许多资源遵循相同的模式:(
    猜你喜欢
    • 2014-06-30
    • 2016-06-21
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2017-01-10
    • 2018-06-27
    相关资源
    最近更新 更多