【问题标题】:How to get all the params of a POST request with Compojure如何使用 Compojure 获取 POST 请求的所有参数
【发布时间】:2015-11-23 21:49:18
【问题描述】:

根据Compojure documentation on routes,我可以很容易地得到这样的单个参数:

(POST "/my-app" [param1 param2]
  (str "<h1>Hello " param1 " and " param2 "</h1>"))

如何获取所有参数,而不仅仅是单个参数?

【问题讨论】:

    标签: clojure compojure ring


    【解决方案1】:

    这样的东西会返回所有的参数:

    (POST "/test" {params :params} 
        (str "POST params=" params))
    

    使用此表示法访问特定参数:

    (println (params :Nom))
    

    【讨论】:

      【解决方案2】:

      compojure 处理程序接收整个请求映射作为其参数,因此处理程序也可以访问所有参数。例如,查看整个请求:

      (POST "/" request
          (str request))
      

      或者,提取所有表单参数:

      (POST "/" request
          (str (:form-params request)))
      

      问题中使用的语法是特定于组合的destructuring syntax,它允许从请求中提取单个参数。这类似于 clojure 的通常解构语法,并且与通常的解构一样,compjure 的解构也允许混合解构并仍然获得整个请求:

      (POST "/" [param1 param2 :as request]
              (str (:form-params request)))
      

      或者,提取命名参数和所有“附加”参数:

      (POST "/" [param1 param2 & more-params]
              (str more-params))
      

      【讨论】:

        【解决方案3】:

        我只是猜想将&amp; params 放入向量中并且有效:

        (POST "/my-app" [& params]
          (str "<h1>Hello " params "</h1>"))
        

        【讨论】:

          猜你喜欢
          • 2013-03-16
          • 2011-08-27
          • 2021-01-12
          • 2016-11-08
          • 1970-01-01
          • 2011-12-16
          • 1970-01-01
          • 1970-01-01
          • 2021-07-08
          相关资源
          最近更新 更多