Rest API Список фото товарів - datawizio/pythonAPI GitHub Wiki

31. Ресурс /product-photo/ (Фото товару, Колекція, Тільки для читання)

З допомогою ресурсу /product-photo/ можна завантажити фото для товарів .

31.1 Структура об'єкта Product Image:

Назва поля Тип поля розмір Обов'язково Тільки читання Примітка
product_url url ні так посилання на товар
product_id рядок 50 так ні ідентифікатор товару
photo рядок 200 так ні посилання на фото товару

31.2. Доступні команди

Для управління ресурсом /product-photo/ підтримуються наступні команди:

  • GET - отримати одну сторінку колекції
  • POST - завантажити документи на повернення товару
  • OPTIONS - мета-інформація по структурі об'єкта
  • HEAD - аналог GET, але повертається тільки заголовок відповіді

31.2.1. GET /product-photo/ - отримати одну сторінку колекції.

Вид команди: GET http://api.datawiz.io/api/v1/product-photo/

Суфікси:
  • .json - Отримати відповідь з серверу в форматі JSON
  • .api - Отримати відповідь з серверу в форматі HTML (тестова платформа)
Параметри:
  • format = json | api - аналог вищевказаних суфіксів
  • page_size = nn - встановити розмір сторінки рівний nn об'єктів
  • page = n - завантажити сторінку n
  • search = text - відображати тільки об'єкти, в полі name яких знайдено "text"
  • ordering = name | identifier - сортувати по полю в алфавітному порядку (від меншого - до більшого)
  • ordering = -name | -identifier - сортувати по полю в зворотньому порядку
Відповідь сервера:

Об'єкт "колекція" складається з чотирьох полів (count, next, previous, results).

Приклад пустої колекції, отриманої в результаті запиту:

GET https://api.datawiz.io/api/v1/product-photo/

{
     "count": 0,
     "next": null,
     "previous": null,
     "results": [] 
}

Приклад колекції з 2-х елементів: GET https://api.datawiz.io/api/v1/product-photo/:

HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, HEAD, OPTIONS
{
            "product_url": "http://api.datawiz.io/api/v1/products/cb2084aa-4644-11e5-80d8-a01d4897e530/",
            "product_id": "cb2084aa-4644-11e5-80d8-a01d4897e530",
            "photo": null
            },
        {
            "product_url": "http://api.datawiz.io/api/v1/product-photo/e2df0ccd-5489-11e6-a618-e03f4978a152/",
            "product_id": "e2df0ccd-5489-11e6-a618-e03f4978a152",
            "photo": null
}
Повідомлення про помилку:

У випадку виникнення помилки сервер повертає відповідь з відповідним статусом, а також повідомлення про помилку, записаним у ключі detail і/або в полі http.response.content:

HTTP 404 NOT FOUND 
Content-Type: application/json 
Vary: Accept 
Allow: GET, HEAD, OPTIONS, PATCH 

{ "detail": "Not found" }

23.2.2 POST /product-photo/ - додати фото товару

Вид команди: POST http://api.datawiz.io/api/v1/product-photo/

Дані запиту:

Існують декілька варіантів для завантаження фото товару на сервіс. Перший варіант передбачає безпосереднє завантаження фото за допомогою Multipart-форми. Інший варіант дозволяє вказувати посилання на фото, в такому випадку сервіс сам отримає зображення по вказаній адресі

Завантаження фото за допомогою Multipart-форми

Приклад запиту на завантаження фото для товару з ідентифікатором PRODUCT-IDENTIFIER: POST http://api.datawiz.io/api/v1/product-photo/


POST /api/v1/product-photo/ HTTP/1.1
Host: api.datawiz.io
Authorization: Bearer c3VwcG9ydF9ffs6
Cache-Control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="product_id"

PRODUCT-IDENTIFIER ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="photo"; filename="photo.jpg" Content-Type:

<< product photo binary data >> ------WebKitFormBoundary7MA4YWxkTrZu0gW--

Приклад запиту на додавання декількох фото - photo.jpg для товару з ідентифікатором PRODUCT-1 та photo2.jpg для товару PRODUCT-2


POST /api/v1/product-photo/ HTTP/1.1
Host: api.datawiz.io
Authorization: Bearer c3VwcG9ydF9ffs6
Cache-Control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="product_id"

PRODUCT-1 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="photo"; filename="photo.jpg" Content-Type:

<< product1 photo binary data >> ------WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="product_id"

PRODUCT-2 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="photo"; filename="photo2.jpg" Content-Type:

<< product2 photo binary data >> ------WebKitFormBoundary7MA4YWxkTrZu0gW--

Додавання фото товару через посилання

Приклад запиту на завантаження фото для товару з ідентифікатором PRODUCT-IDENTIFIER в JSON-форматі


POST 
{
POST /api/v1/product-photo/
{
   "product_id": "PRODUCT-IDENTIFIER",
   "photo": "https://google.com/logo.jpg"
}

Приклад запиту на додавання декількох фото в форматі JSON


POST /api/v1/product-photo/
[
 {
   "product_id": "PRODUCT-IDENTIFIER",
   "photo": "https://google.com/logo.jpg"
 },
 {
   "product_id": "PRODUCT-IDENTIFIER-2",
   "photo": "https://google.com/logo2.jpg"
 }
]
Відповідь сервера:

При коректній обробці запиту сервер повертає код статусу 201 і статус створення об'єкта.

Приклад відповіді сервера:

HTTP 201 CREATED
Content-Type: application/json
Vary: Accept
Location: http://api.datawiz.io/api/v1/product-photo/123/
Allow: GET, POST, HEAD, OPTIONS

{ "updated": 1, "inserted": 0 }

Повідомлення про помилку:

У випадку виникнення помилки сервер повертає відповідь із відповідним статусом, а також повідомленням про помилку, записаним навпроти імені поля, з яким ця помилка пов'язана. Якщо помилка стосується не окремого поля, а всього об'єкта, то повідомлення про помилку буде записано навпроти ключа non_field_errors.

ПРИМІТКА. Кожне повідомлення про помилку являє собою колекцію (масив) рядкових символів.

Приклад відповіді сервера при виникненні помилки (товар з ідентифікатором a123sd-a34-shj4544 не знайдено):

HTTP 400 BAD REQUEST 
Content-Type: application/json 
Vary: Accept 
Allow: GET, POST, HEAD, OPTIONS 
{
    "product_id": "product with old_id a123sd-a34-shj4544 not found"
}
⚠️ **GitHub.com Fallback** ⚠️