【问题标题】:Clojure/Ring how to get post parameters in submit orderClojure / Ring如何在提交顺序中获取帖子参数
【发布时间】:2016-01-07 10:54:53
【问题描述】:

我有一个非常复杂的表格。我需要按照提交的顺序从该表单中获取帖子参数。该应用程序是在 ring/compojure 中创建的。

我可以从响铃请求中获得的所有参数都经过预处理(分组、排序..)

如何获取原始参数列表(最好解析为键/值向量或其他列表)?

【问题讨论】:

    标签: clojure ring


    【解决方案1】:

    您能否提供有关您的项目的更多信息。您使用的是什么 HTTP 服务器(http-kit、clj-http、aleph),您在项目中应用了哪些中间件?

    所有基于参数的东西实际上并不是环规范的一部分,而是由中间件处理(请参阅https://github.com/ring-clojure/ring/wiki/Parameters),因此这在很大程度上取决于您当前正在提取的位。

    我不知道当前存在的任何你想要的环中间件,它们似乎都解析参数列表并将其放入哈希图中,如果存在多个具有相同键名的参数,它们会生成值在 hashmap 中的项目向量。

    说了这么多,我不得不问。 为什么您需要按特定顺序使用它们?

    【讨论】:

    • 我得出了同样的结论,即我将不得不实现自己的中间件,但后来我注意到 http 正文不是非无状态的,并且已经被其他参数中间件读取了.. 叹息.有解决方案,但最后我想我最终会创建一些涉及复杂参数命名方案的其他解决方案,而不是使用提交参数的顺序(树顺序)..
    • 关于原因,表单是一种具有已知参数名称的可编辑动态树结构,因此我需要按顺序排列参数。否则我必须根据一些 id-scheme 来命名参数,这比从有序列表中解析树更难。
    【解决方案2】:

    您最好的选择是创建自己的中间件。使用 wrap-param 中间件作为指导。你只需要在https://github.com/mmcgrana/ring/blob/master/ring-core/src/ring/middleware/params.clj#L29 做你的定制工作

    也就是说,我也对期望参数按特定顺序保持警惕,因为它会使客户端-服务器通信变得脆弱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 2012-12-24
      相关资源
      最近更新 更多