Код Middle FastAPI и Pydantic обновлено

Разбор и проверка query-параметров

Условие

Напишите parse_query(qs): строка запроса вида limit=10&offset=20&sort=-created&tag=a&tag=b. Правила как в эндпоинте FastAPI: limit целое 1-100, по умолчанию 20; offset целое от 0, по умолчанию 0; sort одно из created, -created, price, -price, по умолчанию -created; tag список (может повторяться), по умолчанию пустой. Верните {"ok": True, "params": {...}} или {"ok": False, "errors": [имена полей с ошибками в порядке limit, offset, sort]}.

Примеры

parse_query("limit=10&offset=20&sort=-price&tag=a&tag=b") // {"ok":true,"params":{"limit":10,"offset":20,"sort":"-price","tag":["a","b"]}}
parse_query("") // {"ok":true,"params":{"limit":20,"offset":0,"sort":"-created","tag":[]}}
parse_query("limit=0") // {"ok":false,"errors":["limit"]}

Как подойти

Подсказки: 2
  1. urllib.parse.parse_qs вернёт списки значений.
  2. Сортировка по белому списку.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.