Как я могу обновить поле с запросами Python через Prestashop API?В престашопе 1.7 - PullRequest
0 голосов
/ 05 декабря 2018

Если я хочу получить конкретный Заказ , я делаю это:

import requests, json
r = requests.get('https://mycompany.com/api/orders/4&ws_key=XXX&output_format=JSON')
print r

И все работает нормально.Он дает мне всю информацию о номере заказа 4.



Проблема заключается в том, что я хочу обновить определенное поле, например, поле reference .Если я сделаю это:

data={'ws_key':'XXX',
      'output_format':'JSON',
      'reference': 'TEST'}
r = requests.post('https://mycompany.com/api/orders/4', data=data)
print r

Я получу этот вывод:

[401] Unauthorized



Я попробовал этот другой вариант:

headers = {'Authorization' : 'Basic XXX'}
data={'output_format':'JSON',
      'reference': 'TEST'}
r = requests.post('https://mycompany.com/api/orders/4', data=data, headers=headers)
print r

Но результат тот же:

[401] Unauthorized


Как мне изменить поле?

1 Ответ

0 голосов
/ 06 декабря 2018

Как показывает ваш первый пример, ваши параметры должны быть внутри url, а не data.Таким образом, ваш код будет

import requests
try:
    from urllib import parse
except Exception as e:
    import urllib as parse

payload = {'ws_key':'XXX',
      'output_format':'JSON'}
data = {'reference': 'TEST'}
url = 'https://mycompany.com/api/orders/4&{}'.format(parse.urlencode(payload))

r = requests.put(url,data=data)
print(r.url)

Или

payload = {'ws_key':'XXX',
      'output_format':'JSON',
      'reference': 'TEST'}
url = 'https://mycompany.com/api/orders/4&{}'.format(parse.urlencode(payload))

Но, как описано в документе, вы должны поместить XML-файл вместо данных или JSON.

Prestashop PythonAPI: https://github.com/prestapyt/prestapyt

...