代码之家  ›  专栏  ›  技术社区  ›  Inaimathi

在球拍中张贴/获取绑定

  •  5
  • Inaimathi  · 技术社区  · 14 年前

    球拍中有内置的获取后/获取参数的方法吗? extract-binding 朋友们做我想做的事,但有一个可怕的说明,关于文件上传的潜在安全风险,总结如下

    因此,我们建议 使用,但它们是为 与旧代码的兼容性。

    我能想到的最好的办法是(并且提前原谅我)

    (bytes->string/utf-8 (binding:form-value (bindings-assq (string->bytes/utf-8 "[field_name_here]") (request-bindings/raw req))))
    

    但这似乎不必要地复杂(而且它似乎会受到绑定部分中记录的一些相同的错误的影响)。

    在给定字段名和请求的情况下,是否有或多或少的标准、非错误的方法来获取post/get变量的值?或者更好的是,一种将post/get值集合作为list/hash/a-list返回的方法?除了这两个函数,是否有一个函数可以做同样的事情,但只对post变量,忽略get?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Jay McCarthy    14 年前

    提取绑定很糟糕,因为它不区分大小写,对于多次返回的输入非常混乱,没有处理文件上载的方法,并且自动假定所有内容都是UTF-8,这不一定是真的。如果你能接受这些问题,请随意使用它。

    当数据是UTF-8并且只有一个字段返回时,您编写的代码段可以工作。您可以定义它是一个函数,并避免多次编写它。

    一般来说,我建议使用formlets处理表单及其值。

    现在你的问题…

    在给定字段名和请求的情况下,是否有或多或少的标准、非错误的方法来获取post/get变量的值?

    你拥有的是标准的东西,尽管你错误地认为只有一个值。当存在多个绑定时,您需要筛选字段名上的绑定。同样地,你不 需要 要将值转换为字符串,可以将其保留为字节。

    “或者更好的是,一种将post/get值集合作为list/hash/a-list返回的方法?”

    这就是请求绑定/raw所做的。它是一个绑定列表?物体。由于返回了多个值,将其转换为哈希是没有意义的。

    除了这两个函数,是否有一个函数可以做同样的事情,但只对post变量,忽略gets?

    Web服务器隐藏了日志和GET之间的区别。您可以检查uri和原始post数据来恢复它们,但是您必须自己解析它们。我不推荐。

    杰伊