Skip to content

Rest API Трафик клиентов

Maria edited this page Apr 25, 2018 · 3 revisions

35. Ресурс /people-traffic/ (Трафик клиентов, Коллекция)

  • Трафик клиентов. С помощью ресурса /people-traffic/ можно получить доступ к трафику клиентов в магазине, а также добавлять новый трафик.

35.1. Структура трафика клиентов

35.1.1. Структура обеєкта Loss Type (people-traffic):

Название поля Тип поля размер Обязательно Только чтение Примечание
url URL нет да url этого объекта
traffic_id строка 100 да нет идентификатор трафика клиентов
shop_id строка 100 да нет идентификатор магазина
date строка да нет дата и время посещения магазина

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

С ресурсом /people-traffic/ поддерживаются следующие команды:

  • GET - получить одну страницу коллекции

  • POST - добавить новый трафик

  • DELETE - удалить трафик

  • OPTIONS - мета-информация по структуре объекта

  • HEAD - аналог GET, но возвращается только заголовок ответа

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

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

Суффиксы:
  • .json - Получить ответ с сервера в формате JSON
  • .api - Получить ответ с сервера в формате HTML (тестовая платформа)   
Параметры:
  • Format = json | api - аналог вышеуказанных суффиксов
  • Page_size = nn - установить размер страницы равный nn объектов
  • Page = n - загрузить страницу n
  • Ordering = url | date | order_id - сортировать по полю в сторону увеличения
  • Ordering = -url | -date | order_id - сортировать по полю в обратном порядке
Ответ с сервера:

Объект "коллекция" из четырех полей (count, next, previous, results).

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

GET http://api.datawiz.io/api/v1/people-traffic/

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

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

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

{ "count": 3, "next": null, "previous": null, "results": [ { "url": "https://api.datawiz.io/api/v1/people-traffic/123/", "traffic_id": "123", "shop_id": "157", "shop_url": "https://api.datawiz.io/api/v1/shops/157/", "date": "2018-04-11T01:00:00" }, { "url": "https://api.datawiz.io/api/v1/people-traffic/124/", "traffic_id": "124", "shop_id": "157", "shop_url": "https://api.datawiz.io/api/v1/shops/157/", "date": "2018-04-11T01:00:00" }, { "url": "https://api.datawiz.io/api/v1/people-traffic/125/", "traffic_id": "125", "shop_id": "157", "shop_url": "https://api.datawiz.io/api/v1/shops/157/", "date": "2018-04-11T01:00:00" } ] }

Сообщение о ошибке:

В случаи возникновения ошибки сервер возвращает ответ с соответствующим статусом, а также сообщения о ошибке, записанное в ключе detail:

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

{      "detail": "Not found" }

35.2.2. POST /people-traffic/ - добавить новый трафик

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

Суффиксы:
  • .json - Взаимодействовать с сервером в формате JSON
  • .api - Взаимодействовать с сервером в формате HTML (тестовая платформа)   
Параметры:
  • Format = json - Взаимодействовать с сервером в формате JSON
  • Format = api - Взаимодействовать с сервером в формате HTML (тестовая платформа)
Данные запроса:

В запросе передается JSON-объект, который описывает трафик. Важны три поля: traffic_id, shop_id,date.

Пример корректных запросов на добавления нового трафика: POST http://api.datawiz.io/api/v1/people-traffic/?format=json

{
    "traffic_id": "124",
    "shop_id": "157",
    "date": "2018-04-11T01:00:00"
}
Ответ сервера:

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

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

HTTP 201 CREATED 
Content-Type: application / json 
Vary: Accept 
Location: http://api.datawiz.io/api/v1/people-traffic/
Allow: GET, POST, HEAD, OPTIONS 
{
"created": 1,
"updated": 0
} 
Ограничения (Constraints):

Не можно добавлять на сервер такой трафик, если он уже существует с таким идентификатором traffic_id, и магазином shop_id

Сообщение о ошибке:

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

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

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

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

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

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

OPTIONS /api/v1/people-traffic/

HTTP 200 OK
Allow: GET, PUT, PATCH, DELETE, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "name": "People Traffic Instance",
    "description": "",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "PUT": {
            "url": {
                "type": "string",
                "required": false,
                "read_only": true,
                "label": "Url"
            },
            "traffic_id": {
                "type": "string",
                "required": true,
                "read_only": false,
                "label": "Traffic id"
            },
            "shop_id": {
                "type": "integer",
                "required": true,
                "read_only": false,
                "label": "Shop id"
            },
            "shop_url": {
                "type": "integer",
                "required": false,
                "read_only": true,
                "label": "Shop url"
            },
            "date": {
                "type": "datetime",
                "required": true,
                "read_only": false,
                "label": "Date"
            }
        }
    }
}
Clone this wiki locally