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

19. Ресурс /suppliers/ (Поставщики товара, Коллекция, только для чтения)

Поставщики товара - это список всех поставщиков, с которыми были или ведутся торговые отношения. С помощью ресурса /suppliers/ можно получить доступ к списку поставщиков товаров. А также добавлять в справочник новых поставщиков

19.1. Структура объекта Suppliers:

Название поля Тип поля размер Обязательно Только чтение Примечание
supplier_id строка 100 да нет идентификатор поставщика, должен соответствовать id поставщика товара
name строка 200 да нет имя поставщика
supplier_code строка 50 нет нет код поставщика
phone строка 25 нет нет контактный номер телефона поставщика
commodity_credit_days число нет да количество дней отложенного платежа
address строка 50 нет нет Адрес поставщика

19.2. Доступные команды

Для управления ресурсом /suppliers/ поддерживаются следующие команды:

  • GET - получить одну страницу коллекции
  • POST - загрузить информацию о поставщиках
  • OPTIONS - мета-информация по структуре объекта
  • HEAD - аналог GET, но возвращается только заголовок ответа

19.2.1. GET /suppliers/ - получить одну страницу коллекции.

Вид команды: GET http://api.datawiz.io/api/v1/suppliers

Суффиксы:
  • .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 http://api.datawiz.io/api/v1/suppliers/.json/?search=unknown-string

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

Пример коллекции из 2-х элементов: GET http://api.datawiz.io/api/v1/suppliers/?format=api&page_size=2:

HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, HEAD, OPTIONS
{
    "count": 11, 
    "next": "http://api.datawiz.io/api/v1/suppliers/?page=2&page_size=2&format=api", 
    "previous": null, 
    "results": [
        {
            "supplier_id": "supplier-1",
            "name": "Vasya",
            "supplier_code": "11111",
            "phone": null,
            "commodity_credit_days": 2,
            "address": null
        }, 
        {
            "supplier_id": "supplier-2",
            "name": "Roma",
            "supplier_code": "12345",
            "phone": null,
            "commodity_credit_days": 0,
            "address": null
        }
    ]
}
Сообщение об ошибке:

В случае ошибки сервер возвращает ответ с соответствующим статусом, а также сообщением об ошибке, записанным в ключе detail и / или в поле http.response.content:

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

{ "detail": "Not found" }

19.2.2 POST /suppliers/ - добавить информацию по поставщикам

Вид команды: POST http://api.datawiz.io/api/v1/suppliers/?format=json

Суффиксы:
  • .json - получить ответ с сервера в формате JSON
  • .api - получить ответ с сервера в формате HTML (тестовая платформа)
Параметры:
  • format = json | api - аналог вышеуказанных суффиксов
  • Данные запроса:

    В запросе передается JSON-объект типа словарь (dictionary), который описывает информацию о поставщиках. Важные поля: supplier_id, name. Последовательность полей не принципиальна.

    Пример запроса на загрузку информации об поставщиках товара: POST http://api.datawiz.io/api/v1/suppliers/.json

{
    "supplier_id": "supplier-1",
    "name": "Vasya",
    "supplier_code": "11111",
    "phone": null,
    "commodity_credit_days": 0,
    "address": null
}
Ответ сервера:

При корректной обработке запроса сервер возвращает код статуса 201 и статус создания объекта.

Пример ответа сервера:

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

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

Условия и ограничения (Constraints):
  • Если объект с идентификатором supplier_id уже существует на сервере, то указанный запрос заменит объект на сервере (replace) без предупреждения.
  • Нельзя добавить на сервер объект, если нет товара с указанным идентификатором supplier_id
Сообщение об ошибке:

В случае ошибки сервер возвращает ответ с соответствующим статусом, а также сообщением об ошибке, записанным напротив имени поля, с которым эта ошибка связана. Если ошибка касается не отдельного поля, а всего объекта, то сообщение об ошибке будет записано напротив ключа non_field_errors.

ПРИМЕЧАНИЕ. Каждое сообщение об ошибке представляет собой коллекцию (массив) строчных символов.

Пример ответа сервера при возникновении ошибки (поле name передано пустым):

HTTP 400 BAD REQUEST 
Content-Type: application/json 
Vary: Accept 
Allow: GET, POST, HEAD, OPTIONS 
{
     "name": [
         "This field is required." 
     ] 
}

19.2.3. OPTIONS /suppliers/ - мета-информация по структуре объекта

При выполнении данной команды возвращается такая JSON-структура:

OPTIONS /api/v1/suppliers/

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{ "name": "Supplier List", "description": "this is my text. You can see this text on the REST-page", "renders": [ "application/json", "text/html" ], "parses": [ "application/json", "application/x-www-form-urlencoded", "multipart/form-data" ], "actions": { "POST": { "supplier_id": { "type": "string", "required": true, "read_only": false, "label": "Supplier id", "max_length": 12 }, "name": { "type": "string", "required": true, "read_only": false, "label": "Name", "max_length": 200 }, "supplier_code": { "type": "string", "required": false, "read_only": false, "label": "Supplier code", "max_length": 50 }, "phone": { "type": "string", "required": false, "read_only": false, "label": "Phone", "max_length": 25 }, "commodity_credit_days": { "type": "integer", "required": false, "read_only": false, "label": "Commodity credit days" }, "address": { "type": "string", "required": false, "read_only": false, "label": "Address", "max_length": 50 } } } }

⚠️ **GitHub.com Fallback** ⚠️