【问题标题】:POST/GET bindings in RacketRacket 中的 POST/GET 绑定
【发布时间】:2010-06-22 19:07:23
【问题描述】:

是否有内置的方式来获取 Racket 中的 POST/GET 参数? 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 值的集合作为列表/哈希/a-list 取回的方法?除了其中任何一个,是否有一个函数可以做同样的事情,但只针对 POST 变量,忽略 GET?

【问题讨论】:

    标签: racket http-request post-parameter


    【解决方案1】:

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

    当数据为 UTF-8 且只有一个字段返回时,您编写的 sn-p 有效。您可以将其定义为函数,避免多次编写。

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

    现在你的问题...

    “在给定字段名称和请求的情况下,是否有一种或多或少的标准、无错误的方法来获取 POST/GET 变量的值?”

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

    “或者更好的是,一种将 POST/GET 值的集合作为列表/哈希/a-list 取回的方法?”

    这就是 request-bindings/raw 的作用。是绑定列表吗?对象。由于多个值返回,将其转换为哈希是没有意义的。

    “除了其中任何一个,是否有一个函数可以做同样的事情,但只适用于 POST 变量,忽略 GETs?”

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

    【讨论】:

    • 看起来我对 POST/GET 变量表示的工作方式有一个稍微损坏的模型。出于好奇,formlets 如何处理这种解析?它与我上面的binding:form-value 电话基本相同吗?我没有直接使用 formlet 路由的主要原因是我试图通过 jQuery.ajax 与服务器通信(它发送 POST 或 GET 变量,但不一定有关联的表单元素)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多