投稿/ラケットでバインディングを取得します
-
29-09-2019 - |
質問
ラケットでポスト/パラメーターを取得するための組み込みの方法はありますか? extract-binding
そして、友人は私がやりたいことをしますが、終了するファイルアップロードに関連する潜在的なセキュリティリスクについては、悲惨なメモが添付されています
したがって、それらの使用に反対することをお勧めしますが、古いコードとの互換性のために提供されます。
私が把握できる最高のものは(そして事前に私を許してください)です
(bytes->string/utf-8 (binding:form-value (bindings-assq (string->bytes/utf-8 "[field_name_here]") (request-bindings/raw req))))
しかし、それは不必要に複雑に思えます(そして、それはバインディングセクションで文書化された同じバグのいくつかに苦しむようです)。
フィールド名とリクエストを与えられて、ポスト/get Variableの価値を取得するための、多かれ少なかれ標準的で非uggyな方法はありますか?または、さらに良いことに、リスト/ハッシュ/aリストとして投稿/取得値のコレクションを取り戻す方法は?それらのいずれかを除いて、同じことをする関数はありますが、ポスト変数についてのみ、無視しますか?
解決
抽出バインディングは、症例感受性があり、複数回戻ってくる入力にとって非常に乱雑であり、ファイルのアップロードを処理する方法がなく、すべてがUTF-8であると自動的に想定しているため、必ずしも真実ではないため、悪いことです。これらの問題を受け入れることができる場合は、自由に使用してください。
あなたが書いたスニペットは、データがUTF-8の場合、そしてフィールドが1つしか戻っていないときに機能します。それが機能であると定義し、何度も書くことを避けることができます。
一般に、フォームレットを使用してフォームとその価値を扱うことをお勧めします。
今あなたの質問...
「フィールド名とリクエストを与えられた、ポスト/get-variableの価値を取得するための、多かれ少なかれ標準的で非uggyな方法はありますか?」
あなたが持っているのは標準的なものですが、あなたは誤って値が1つしかないと想定しています。複数の場合、フィールド名のバインディングをフィルタリングする必要があります。同様に、あなたはしません 必要 値を文字列に変えるには、バイトを正常に残すことができます。
「または、さらに良いことに、リスト/ハッシュ/aリストとして投稿/取得値のコレクションを取り戻す方法は?」
それがRequest-Bindings/Rawが行っていることです。それはバインディングのリストですか?オブジェクト。複数の値のリターンのために、ハッシュに変えることは意味がありません。
「それらのいずれかを除いて、同じことをする関数はありますが、ポスト変数のみで、無視してください?」
Webサーバーは、投稿と獲得の違いを隠します。 URIとRAW POSTデータを検査してそれらを回復することはできますが、自分で解析する必要があります。お勧めしません。
ジェイ