Продолжаем писать робота, который будет присылать нам на почту подборку госконтрактов. Сегодня мы будем совершенствовать функцию, которая делает запрос к API сервиса «ГосЗатраты». Как всегда, начинаем с открытия проект и запуска виртуального окружения с помощью pipenv shell

Видео: Глеб Лиманский

Сейчас наша функция получения данных устроена таким образом, что принимает на вход код региона заказчика, подставляет его в запрос, и мы получаем выдачу госконтрактов. Но если мы посмотрим в документацию к API, то увидим, что опций, которые можно использовать для запроса, гораздо больше. Предугадать эти опции в нашей функции невозможно, поэтому мы будем использовать именованные аргументы, сокращенно kwargs. С их помощью мы сможем передавать любой из этих параметров в нашу функцию, по ним будет составляться запрос и формироваться наша выдача.

Перепишем функцию: удалим из строчки url запрос customerregion, а region_code заменим на именованные аргументы, используя двойную звездочку ** и слово kwargs. Когда мы будем вызывать эту функцию, вместо kwargs будем указывать нужные аргументы, которые хотим добавить в url, .

С помощью этого синтаксиса мы можем передавать в нашу функцию переменное количество аргументов. Чтобы использовать их, введем переменную params, где распакуем наши именованные аргументы. Теперь, когда мы будем отправлять запрос к серверу «ГосЗатрат», мы должны указать в data не только url, но и params.

Проверим, как это работает. Например, мы хотим получить все исполненные контракты, где поставщиком выступала компания Игоря Ротенберга. Таким образом, у нас есть два параметра: supplierinn и currentstage с выбранным правильным значением.

Добавляем в result желаемый supplierinn и currentstage, после чего запускаем функцию — и получаем в терминале ровно то, что нам было нужно. 

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