Существует ли встроенный способ достигнуть параметры POST/получать в Ракетке? extract-binding
и друзья делают то, что я хочу, но существует страшное примечание, присоединенное о потенциальных угрозах безопасности, связанных с загрузками файла, который завершает
Поэтому мы рекомендуем против их использования, но им предоставляют для совместимости со старым кодом.
Лучшее, которое я могу изобразить, (и простите мне заранее),
(bytes->string/utf-8 (binding:form-value (bindings-assq (string->bytes/utf-8 "[field_name_here]") (request-bindings/raw req))))
но это кажется излишне сложным (и кажется, что это пострадало бы от некоторых из тех же ошибок, зарегистрированных в раздел Bindings).
Существует ли более или менее стандартный, неошибочный способ получить значение POST/GET-variable, данного имя поля и запрос? Или еще лучше, способ возвратить набор POST/получать оценивает как list/hash/a-list? При запрете любого из тех существует ли функция, которая сделала бы то же, но только для переменных POST, игнорирование ДОБИРАЕТСЯ?
Привязка извлечения - это плохо, потому что оно нечувствительно к регистру, очень беспорядочно для входных данных, которые возвращаются несколько раз, не имеет способа справиться с загрузкой файлов и автоматически предполагает, что все в кодировке UTF-8, что не обязательно верно. Если вы можете принять эти проблемы, не стесняйтесь использовать это.
Написанный вами фрагмент кода работает, когда данные имеют формат UTF-8 и когда возвращается только одно поле. Вы можете определить, что это функция, и не писать ее много раз.
В общем, я рекомендую использовать формы для работы с формами и их значениями.
Теперь ваши вопросы ...
«Есть ли более или менее стандартный, не содержащий ошибок способ получить значение переменной POST / GET с учетом имени поля и запроса?»
То, что у вас есть, стандартно, хотя вы ошибочно полагаете, что есть только одно значение. Если их несколько, вам нужно отфильтровать привязки к имени поля. Точно так же вам не требуется , чтобы преобразовать значение в строку, вы можете оставить его в байтах.
«Или еще лучше, способ вернуть коллекцию значений POST / GET в виде списка / хэша / списка?»
Это то, что делает request-bindings / raw. Это список привязки? объекты. Нет смысла превращать его в хеш из-за множественных возвратов значений.
«За исключением любого из них, существует ли функция, которая делала бы то же самое, но только для переменных POST, игнорируя GET?»
Веб-сервер скрывает от вас разницу между POST и GET. Вы можете проверить uri и необработанные данные поста, чтобы восстановить их, но вам придется проанализировать их самостоятельно. Не рекомендую.
Джей