代码之家  ›  专栏  ›  技术社区  ›  MouTio

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

  •  0
  • MouTio  · 技术社区  · 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]未经授权
    


    如何修改字段?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Community Mohan Dere    6 年前

    正如第一个示例所示,参数应该位于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