Привязка POST/получать в Ракетке

Существует ли встроенный способ достигнуть параметры 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, игнорирование ДОБИРАЕТСЯ?

5
задан secretformula 26 May 2014 в 02:25
поделиться

1 ответ

Привязка извлечения - это плохо, потому что оно нечувствительно к регистру, очень беспорядочно для входных данных, которые возвращаются несколько раз, не имеет способа справиться с загрузкой файлов и автоматически предполагает, что все в кодировке UTF-8, что не обязательно верно. Если вы можете принять эти проблемы, не стесняйтесь использовать это.

Написанный вами фрагмент кода работает, когда данные имеют формат UTF-8 и когда возвращается только одно поле. Вы можете определить, что это функция, и не писать ее много раз.

В общем, я рекомендую использовать формы для работы с формами и их значениями.

Теперь ваши вопросы ...

«Есть ли более или менее стандартный, не содержащий ошибок способ получить значение переменной POST / GET с учетом имени поля и запроса?»

То, что у вас есть, стандартно, хотя вы ошибочно полагаете, что есть только одно значение. Если их несколько, вам нужно отфильтровать привязки к имени поля. Точно так же вам не требуется , чтобы преобразовать значение в строку, вы можете оставить его в байтах.

«Или еще лучше, способ вернуть коллекцию значений POST / GET в виде списка / хэша / списка?»

Это то, что делает request-bindings / raw. Это список привязки? объекты. Нет смысла превращать его в хеш из-за множественных возвратов значений.

«За исключением любого из них, существует ли функция, которая делала бы то же самое, но только для переменных POST, игнорируя GET?»

Веб-сервер скрывает от вас разницу между POST и GET. Вы можете проверить uri и необработанные данные поста, чтобы восстановить их, но вам придется проанализировать их самостоятельно. Не рекомендую.

Джей

3
ответ дан 15 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: