#python #woocommerce #woocommerce-rest-api
#python #woocommerce #woocommerce-rest-api
Вопрос:
Я работаю над интерфейсом для обмена данными между нашей OMS и WooCommerce, используя оболочку Python WooCommere API, и у меня возникают проблемы с получением заказов на основе статуса. Я могу получить все заказы, подобные этому
tmp_orders = DIVISION_API.get('orders')
но я пытаюсь получать только заказы со статусом «обработка». Основываясь на документации API и результатах json из данных заказа, которые я получаю с помощью вышеупомянутого вызова, похоже, что я должен быть в состоянии вызвать
tmp_orders = DIVISION_API.get('orders', status='processing')
и получать только те заказы, которые находятся в состоянии обработки, но когда я пытаюсь это сделать, я получаю ошибку TypeError: request() got an unexpected keyword argument 'status'
.
Я искал надежные примеры, используя Python, но не могу найти никакого решения. Любые предложения были бы фантастическими.
Спасибо.
Комментарии:
1. Документ здесь — woocommerce.github.io/woocommerce-rest-api-docs /…
2. @mujuonly Это документация, с которой я работал, но я не могу найти ни одного примера того, как получать заказы на основе статуса. Это достаточно легко получить по идентификатору
.get('orders/<id>')
, но я ничего не могу найти о статусе. Кажется странным отсутствие каких-либо примеров фильтрации на основе чего-либо, кроме ID.
Ответ №1:
Думаю, мне удалось с этим разобраться. Потратив довольно много времени на поиск, метод проб и ошибок, это выглядит как работоспособное решение.
orders = api_obj.get('orders', params={'per_page': 10, 'status': 'processing', 'page': 1})
Похоже, что вы можете передать dict
ряд параметров (как params
), и они будут переданы базовому запросу. Я не знаю, действительно ли разработчик API-оболочки предполагал использовать его именно таким образом, но он работает надежно. Надеюсь, это поможет кому-то еще.
Ответ №2:
Не знаком с этим API, но из того, что указано в документации, вы должны выполнить .get('orders')
, использовать .json()
в ответе, чтобы получить информацию в json
формате, а затем вы можете искать заказы, ключ которых status
равен processing
.
Комментарии:
1. На самом деле это то, что я делал на этапе тестирования, но я надеялся, что есть способ получше. Я мог видеть, что этот метод становится все дороже по мере увеличения количества заказов. Большинство оболочек Python API поддерживают передачу аргументов в запрос в виде kwargs, которые анализируются и используются для фильтрации вызова REST. Это также было бы полезно для разбивки на страницы и т.д. Однако я ценю ваше предложение!