Загрузка изображения элемента с использованием Square Connect API

Я просмотрел примеры, опубликованные в документации Square Connect API, и примеры на GitHub, однако не могу адаптировать эти примеры к руководству по загрузке изображений: http://docs.connect.Squareup.com/#post-image

Часть проблемы заключается в работе с Content-Type: multipart/form-data, который требуется только для загрузки изображения, поэтому документация отсутствует (с документами connect-api).

Мой последний вопрос: может ли Square опубликовать пример того, как загружать изображения? Наиболее подходящим будет пример, показывающий, как обновить несколько элементов с помощью изображений, а не только один элемент. Любая помощь приветствуется.


person Accounting    schedule 16.01.2015    source источник


Ответы (1)


Спасибо, что указали на этот пробел в документации. Приведенная ниже функция использует библиотеку Python Requests для загрузки изображения для элемента (эта библиотека делает multipart/ запросы form-data значительно проще). Обратите внимание, что вам необходимо сначала установить Requests, если у вас нет.

import requests

def upload_item_image(item_id, image_path, access_token):

  endpoint_path = 'https://connect.squareup.com/v1/' + your location + '/items/' + item_id + '/image'

  # Don't include a Content-Type header, because the Requests library adds its own
  upload_request_headers = {'Authorization': 'Bearer ' + access_token,
                            'Accept': 'application/json'}

  # Be sure to set the correct MIME type for the image
  files = [('image_data', (image_path, open(image_path, 'rb'), "image/jpeg"))] 
  response = requests.post(endpoint_path, files=files, headers=upload_request_headers)

  # Print the response body
  print response.text
  • item_id – это идентификатор элемента, для которого вы загружаете изображение.
  • image_path — это относительный путь к загружаемому вами изображению.
  • access_token — это токен доступа для продавца, от имени которого вы действуете.

Невозможно загрузить изображения для нескольких элементов в одном запросе на эту конечную точку. Вместо этого отправьте отдельный запрос для каждого элемента.

person Stephen Barlow    schedule 21.01.2015
comment
Спасибо Стивен за ваш ответ. К сожалению, я не могу заставить это работать. Когда я выполняю код, он просто запускается, ничего не происходит. Я должен добавить, что я получил синтаксическую ошибку, связанную со скобками в последней строке кода, которую я решил, изменив ее на: print (response.text()). Есть ли что-то, что вы видите в коде, что требует модификации, чтобы заставить его работать? Заранее спасибо за вашу помощь! - person Accounting; 03.03.2015