Как настроить запросы к API Wildberries в Postman и 1С? Разбор ошибок "Неверная схема запроса" и "Method Not Allowed"

Программист 1С v8.3 (Управляемые формы) Торговля и дистрибуция
← На главную

При работе с API Wildberries начинающие разработчики часто сталкиваются с ошибками, которые на первый взгляд кажутся нелогичными. Например, при попытке получить остатки товаров методом /api/v2/stocks можно получить ответ "Неверная схема запроса", а при обращении к списку складов /api/v2/warehouses — "Method Not Allowed". Эти проблемы обычно связаны с неправильным пониманием принципов работы HTTP-запросов, в частности, разницы между методами GET и POST. Давайте подробно разберем, как правильно настроить такие запросы в Postman и выполнить их из 1С.

Выясняем причину ошибок

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

  1. "Неверная схема запроса" при вызове метода /api/v2/stocks. Эта ошибка возникает, когда параметры передаются в теле запроса (Body), в то время как метод ожидает их в строке URL. Метод получения остатков, как и большинство методов получения данных, использует тип запроса GET. В GET-запросах все параметры должны быть частью URL.
  2. "Method Not Allowed" (Код 405) при вызове /api/v2/warehouses. Эта ошибка однозначно говорит о том, что для обращения к указанному адресу используется неверный HTTP-метод. Например, вы пытаетесь отправить POST-запрос, когда сервер ожидает GET-запрос. Метод получения складов также является GET-запросом и не требует тела.

Ключевой момент — внимательно изучать документацию API. Для Wildberries лучшим источником является их интерактивная документация Swagger, где для каждого метода указан тип (GET, POST, PUT и т.д.) и способ передачи параметров.

Решение 1: Правильная настройка GET-запроса в Postman

Postman — удобный инструмент для тестирования API, но важно правильно указывать все параметры. Рассмотрим по шагам, как настроить запрос на получение остатков.

Шаг 1: Установка основного URL и типа запроса

В основной строке выберите тип запроса GET и введите URL метода без параметров:

https://suppliers-api.wildberries.ru/api/v2/stocks

Шаг 2: Настройка параметров (Params)

Для GET-запросов параметры передаются через вкладку "Params". Postman автоматически добавит их к URL.

  1. Перейдите на вкладку "Params" под строкой URL.
  2. В таблице введите ключи и значения необходимых параметров. Например, для пагинации (получения данных по частям):
    • В поле KEY: skip, в поле VALUE: 0 (сколько записей пропустить)
    • В поле KEY: take, в поле VALUE: 100 (сколько записей получить)
  3. Убедитесь, что во вкладке "Body" выбрана опция "none". Тело у GET-запроса должно быть пустым.

После этих действий итоговый URL в Postman будет выглядеть так: https://suppliers-api.wildberries.ru/api/v2/stocks?skip=0&take=100

Шаг 3: Настройка авторизации (Headers)

Для доступа к API Wildberries требуется API-ключ, который передается в заголовках. Важный момент: ключ должен передаваться с префиксом Bearer.

  1. Перейдите на вкладку "Headers".
  2. В поле KEY укажите Authorization.
  3. В поле VALUE вставьте ваш ключ в формате Bearer ВАШ_API_КЛЮЧ. Например: Bearer eyJhbGciOiJI...

Теперь запрос полностью настроен, и при его отправке вы должны получить корректный ответ от сервера в формате JSON.

Решение 2: Пример выполнения запроса на языке 1С

Интеграция с API из 1С осуществляется с помощью объектов HTTPСоединение и HTTPЗапрос. Посмотрим на рабочий пример кода, который демонстрирует правильное формирование GET-запроса для получения остатков.

Получение данных с сервера

В этом коде параметры skip и take добавляются непосредственно в строку URLЗапроса, а токен авторизации помещается в заголовок.


Процедура ПолучитьОстаткиWildberries()

    Сервер = "suppliers-api.wildberries.ru";
    // Вставьте ваш реальный API-ключ
    Токен = "eyJhbGciOiJI..."; 
    
    // Формируем заголовки HTTP-запроса
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("accept", "application/json");
    // Передаем токен авторизации с обязательным префиксом Bearer
    ЗаголовокHTTP.Вставить("Authorization", "Bearer " + Токен); 
    
    // Параметры skip и take являются частью строки URL
    URLЗапроса = "/api/v2/stocks?skip=0&take=500";  
    
    HTTPЗапрос = Новый HTTPЗапрос(URLЗапроса, ЗаголовокHTTP);
    
    // Для работы с https-адресами необходимо защищенное соединение
    Соединение = Новый HTTPСоединение(Сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL);
    
    Попытка
        HTTPОтвет = Соединение.Получить(HTTPЗапрос);
        
        Если HTTPОтвет.КодСостояния = 200 Тогда // Успешно получен ответ
            ДанныеОбработки = HTTPОтвет.ПолучитьТелоКакСтроку();
            Сообщить("Ответ от сервера успешно получен!");
            
            // Вызываем процедуру для разбора полученных данных
            РазобратьОтветJSON(ДанныеОбработки);
            
        Иначе
            // Выводим информацию об ошибке для диагностики
            Сообщить("Ошибка запроса! Код состояния: " + HTTPОтвет.КодСостояния);
            Сообщить("Тело ответа: " + HTTPОтвет.ПолучитьТелоКакСтроку());
        КонецЕсли;
        
    Исключение
        Сообщить("Произошла ошибка при выполнении HTTP-запроса: " + ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры

Обработка полученного JSON-ответа в 1С

После того как мы получили ответ в виде строки JSON, его нужно преобразовать в объекты 1С (Структура, Массив) для дальнейшей работы. Для этого используются объекты ЧтениеJSON и метод ПрочитатьJSON().


Процедура РазобратьОтветJSON(СтрокаJSON)

    Если НЕ ЗначениеЗаполнено(СтрокаJSON) Тогда
        Возврат;
    КонецЕсли;

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
    
    // Преобразуем JSON в объекты 1С. 
    // Второй параметр Истина позволяет восстанавливать типы данных (Дата, Число и т.д.)
    СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON, Истина);
    
    // Получаем данные из структуры по ключам, указанным в документации API
    Всего = СтруктураОтвета.Получить("total");
    МассивОстатков = СтруктураОтвета.Получить("stocks");
    
    Сообщить("Общее количество позиций с остатками: " + Всего);
    
    // Перебираем массив с остатками
    Для каждого ЭлементОстатка Из МассивОстатков Цикл
        // Обращаемся к свойствам элемента через точку
        АртикулПоставщика = ЭлементОстатка.article;
        Остаток = ЭлементОстатка.stock;
        КодТовараWB = ЭлементОстатка.chrtId;
        
        Сообщить("Артикул: " + АртикулПоставщика + ", Остаток: " + Остаток + ", Код WB: " + КодТовараWB);
        
        // ...здесь может быть ваша логика по обновлению остатков в 1С
    КонецЦикла;

КонецПроцедуры

Таким образом, ключ к успешной работе с API Wildberries — это внимательное чтение документации и правильное формирование HTTP-запросов в соответствии с требуемым методом (GET, POST и т.д.). Для GET-запросов все параметры должны передаваться в URL, а тело запроса оставаться пустым.

← На главную