如何通过Prestashop API用python请求更新字段?在Prestashop 1.7中

时间:2018-12-05 15:57:29

标签: python python-requests prestashop prestashop-1.7

如果要获取特定的订单,请执行以下操作:

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

它工作正常。它为我提供了有关订单号4的所有信息。



问题是当我想更新特定字段时,例如引用字段。如果我这样做:

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 :(得分:0)

如您的第一个示例所示,您的参数应该在url内而不是数据内。所以您的代码将是

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 Python API:https://github.com/prestapyt/prestapyt