Т.Е. ?id=1&foo=bar превращается в { 'id': 1, 'foo': 'bar' }

8 ответов

5 просмотров

но вам то эта {} передается не текстом, а объектом, ваш язык лямбды как из этого объекта порядок то вытащит? во вторых, копии параметра объединяются через запятую, т.е. ?id=1&a=b&id=2 превратится в { 'id': '1,2' , 'a': 'b' } что тоже не позволит строку восстановить

Karen-Tovmasyan Автор вопроса
Karen Tovmasyan
Я использовал Python либу urllib.urlencode

когда хендлер лямбы вызывается, ему передается объект евента, этот объект не строка, а готовый объект вашего языка лямбы. в питоне это dict , в dict, который до недавнего времени не сохранял порядок добавления ключей, с недавнего времени (с версии 3.6 подсказывает гугол) порядок сохраняется, но это фича языка, скажем написать лямбду на javascript с проверяющую хеш уже не выйдет. т.е. вы в дизайне закладываетесь на какую-то специфическую фичу языка, тем самым , ИМХО, подкладываете себе свинью. В доке к API gateway (https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html) нигде не указано, что они в эту мапу будут добавлять параметры в порядке следования их в запросе, т.е. даже если вы твёрдо знаете , что навсегда останетесь на питоне >= 3.6 всё-равно закладываетесь на недокументированную фичу лямбд, которая может всегда поменяться и вас не спросят.

Mike Wazowski
но вам то эта {} передается не текстом, а объектом...

Технически у многих языков есть ордередмап, например у питона словарь так себя ведёт начиная с 3.6 версии.

Karen-Tovmasyan Автор вопроса
Mike Wazowski
когда хендлер лямбы вызывается, ему передается объ...

Это вы очень хорошо подметили! Пожалуй, стоит сходить к сервисной команде (если пустят)

Mike Wazowski
когда хендлер лямбы вызывается, ему передается объ...

кстате да, если у вас JSON, то знаю точно что в js нету спецификации о том что порядок элементов будет соблюден при конвертации

Агент Печенька
Технически у многих языков есть ордередмап, наприм...

даже если в языке можно добраться до сырой JSON строки с евентом, как в Java например, нет никакой гарантии, что в этой строке параметры будут идти в том же порядке, как и в запросе. На практике наверняка будут в простом случае,, можно связаться с поддержкой и попросить рассмотреть возможность добавить это в документацию

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

Обсуждают сегодня

Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
Приветствую. Есть N видео объектов (фильмы). Часть полной длины просмотра а часть короткие ( обрезаны титры). Задача найти идентичные фильмы. Я не в курсе, есть ли аналог шаз...
Nikolay Chudinov
7
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Кто знает как подружить Gstreamer с OpenCV? Вот такой пайплайн я шлю с гстримера но OpenCV + python у меня никак не получается его воспроизвести "gst-launch-1.0 nvarguscameras...
Artem
3
Как потом сделать чтобы питон видел нахождение скомпилированных файлов? Я через системные переменные пробовал указать расположение но не помогло
Artem
5
https://youtu.be/d8Jx6zO1yw0?si=AvWkrBe-RS3FAlWX Компилировал с CUDA по этому гайду, единственно моменты: 1) С VS 2022 работает, нужно только что бы была установлена среда C...
Denis
1
Всем привет, может кто знает нормальных иностранных хостинг провайдеров. Что бы по качеству аналогичные netangels, beget, timeweb?
Black Cat
4
Добрый день , слышали про то что XML схемы https://schemas.xmlsoap.org/soap/envelope/ перестали работать со поза-вчера. А домен https://schemas.xmlsoap.org/ , отвечает 404 оши...
Max Dubovsky
3
Второй вопрос: снимаются ли эти ограничения при покупке на fragment хрени за кучу денег? (до 4096 / 2048)
Артем Уколов
3
Это везде так работает, или еще колдовать нужно?)
Квадрат Гипотенузы
6
Карта сайта