В список проектов
Название: Выгрузка на сайт товаров
Предполагаемый бюджет: 10 000 руб.
Категория: Торговля
Конфигурация: 1С:Управление торговлей 10
Платформа: Платформа 1С v8.x (все механизмы)
Сроки: От 1 дн. до 1 мес.
Бюджет: От 1 руб. до 30 000 руб.
Статус: Поиск исполнителя

1. Оценка проекта
и выбор
исполнителя
Претенденты
отправляют оценку стоимости и сроков выполнения проекта. Заказчик ведет переговоры и выбирает одного исполнителя.
2. Создание
этапов проекта со
стоимостью и сроками
Исполнитель
создает этап проекта,
в котором указаны стоимость, срок выполнения работ и список задач, которые необходимо
выполнить.
3. Депонирование
оплаты
Заказчик
перечисляет денежные средства на депонент. После получения депонента, исполнитель приступает к выполнению
работ.
4. Выполнение
работ и
сдача-приемка работ
заказчику
Исполнитель
выполняет работы по каждому этапу проекта. После сдачи-приемки этапа заказчику, исполнитель получает оплату
с депонента.
5. Рейтинг и отзывы
об исполнителе
и заказчике
Заказчик
оставляет отзыв об исполнителе. Исполнитель
оставляет отзыв о заказчике.

О проекте

Задача
Необходимо продолжить начатую или написать с нуля обработку выгрузки на сайт через rest API по формату JSON каталога товаров и обратно загрузить заказы. Пока первая часть загрузка каталога товаров на сайт. Описание:

Пока кратко вводная информация, потом еще все равно будут уточнения, так как понадобится добавлять поля, а так же передавать данные о клиентах.

Вроде характеристик (атрибуты) у продуктов нет, поэтому пока ориентируемся на 2 основные сущности категория и продукт.

ПЕРВАЯ ЧАСТЬ про каталог
Категория
Продукт
По каждой сущности отдельно:

Категория тут все просто, например "Диваны", "Столы", "Тумбы", объединяет некоторые продукты "в группу". Продукт может принадлежать только к одной категории.

Продукт непосредственно некий продукт с заголовком, кратким описанием, описанием, картинкой, какими-то еще полями (можно обговорить, что нужно).


ВТОРАЯ ЧАСТЬ про REST

Обмен данными будет производиться посредством HTTP протокола, с использованием методов GET, POST, DELETE;
Адрес для совершения запросов будет примерно такой: URL/_api/ENTITY/[METHOD]/[SOME_PARAMS]/

URL адрес сайта
ENTITY сущность которой будут оперировать, может быть category, product, что-то еще, в зависимости от задач
METHOD имя метода, может быть не указано будет использоваться метод index. Каждая сущность имеет метод index к которому можно обращаться с помощью запросов GET, POST, DELETE, а так же, имеет обязательный аргумент в виде GUID'а сущности которой необходимо оперировать.
SOME_PARAMS в данном случае это только GUID.

GUID будет главным связующим ключом между категориями, продуктами. GUID, само собой, уникален.

В качестве формата данных будет использоваться JSON.

Позднее, когда мы приступ к реализации, обсудим передачу всех сущностей. А пока, самый наглядный, как будет передавать информация о продукте.

Продукты
Для создания/обновления продукта, необходимо будет выполнить POST запрос на адрес URL/_api/product/PRODUCT_GUID/

Пример передаваемых данных (полей может быть больше):
{
"category_id": "1F9619FF-8B86-D011-B42A-00CF4FC964AB",
"name": "Product",
"description": "<p>Description of product</p>",
"price": 100.00,
"hidden": false

}


ЧАСТЬ ТРЕТЬЯ передача изображений

Изображения так же будут передаваться через HTTP-запрос

Для загрузки изображения, необходимо отправить POST запрос на адрес
URL/_api/product/image/PRODUCT_GUID/
В качестве отправляемых данных должно быть обычное изображение формата png или jpg.
В HTTP заголовках запроса необходимо передать заголовок Content-Type с значением image/png или image/jpg в зависимости от типа изображения.


ЧАСТЬ ЧЕТВЕРТАЯ ответы сервера

При выполнении POST запросов для создания/обновления сущностей, возможны ответы следующих видов:
HTTP 400 Bad Request в случае, если не переданы данные, или они не в формате JSON. Или же в случае, если не указаны какие-то обязательные поля, например, категория у продукта
HTTP 201 Created новая сущность была создана
HTTP 202 Accepted ранее созданная сущность была обновлена

При выполнении GET и DELETE запросов возможны ответы вида:
HTTP 400 Bad Request в случае, если не передан GUID
HTTP 404 Not Found сущность не найдена
HTTP 200 OK данные успешно отправлены (только в случае GET запроса)
HTTP 202 Accepted сущность была удалена успешно (только в случае DELETE запросов)

В случае загрузки изображений, возможна ошибка HTTP 406 Not Acceptable если передан некорректный заголовок Content-Type (или не передан вообще).
При любых запросах возможна ошибка HTTP 500 Internal Server Error, возникающая в случае, если что-то пошло не так, например, попытка оперировать невалидными данными. О таких ошибках необходимо сообщать.

ПЯТАЯ ЧАСТЬ тестирование

Когда мы реализуем свою часть, можно будет тестировать запросы, используя консольную утилиту curl. Тогда формат запроса будет примерно таким:

curl -i -X TYPE ADDRESS --data @path/to/data.json
где
TYPE тип запроса, GET, POST, DELETE
ADDRESS адрес для запроса, например, URL/_api/product/PRODUCT_GUID/
path/to/data.json путь к json файлу который нужно отправить в качестве данных для запроса (необходимо только для POST запросов). Для GET/DELETE запросов аргумент --data не указывается.


P.S. Все GUID в данном письме выдуманы. Совпадения с реальными данными случайны :)

Обязательные требования
Выгрузка и загрузка должна производиться в автоматическом режиме в виде регламентного задания
Откликнуться на проект