Общая информация по загрузке вложений представлена в статье Загрузка вложения.
Разберем пример загрузки вложения на тестовую среду testdev2 при помощи инструмента Postman.
Шаг 1: авторизация
Создаем новый запрос и указываем:
- метод = POST
- Url = https://testdev2.logistpro.su/api/v1/account/login
- ключ АПИ (во вкладке Headers): x-apikey = jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM=
- пару логин/пароль (в теле запроса вкладки Body): ext.customer.1@logistpro.su / I1f7VHKP1LxINo
Все необходимые данные для доступа к тестовой среде testdev2 содержатся в статье Тестовая среда testdev2.
Отправляем запрос и получаем в ответ:
- статус = 200 OK
- авторизационный токен в cookie .AspNet.ApplicationCookie
Узнать больше про ключ АПИ и авторизацию в системе можно в статье Авторизация.
Шаг 2: загрузка файла
Создаем новый запрос и указываем:
- метод = POST
- Url = https://testdev2.logistpro.su/api/v1/tender/{id}/upload (где id - идентификатор ранее созданного запроса на перевозку)
- ключ АПИ (во вкладке Headers): x-apikey = jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM=
- тело запроса: (вкладка Body)
- формат = form-data
- параметры:
- Type = Накладная (тип Text)
- File = любой файл с локального диска (тип File)
- любые дополнительные параметры, описывающие документ (набор необязательных параметров можно узнать в модели данных запроса)
Пример создания запроса можно посмотреть в статье Как создать свой первый Запрос на перевозку.
Перед запуском можно проверить сохраненный авторизационный токен в разделе разделе Cookies:
Отправляем запрос и получаем в ответ:
- статус = 200 OK
- Id - идентификатор вложения
- DownloadLink - прямая ссылка на скачивание документа
Шаг 3: проверка вложения
В интерфейсе торгов
- открываем детальную страницу запроса по адресу https://testdev2.logistpro.su/Tender/Details/{id} (где id - идентификатор запроса на перевозку)
- в нижней части страницы раздел Вложенные документы
Через АПИ
Создаем новый запрос и указываем:
- метод = GET
- Url = https://testdev2.logistpro.su/api/v1/tender/{id} (где id - идентификатор запроса на перевозку)
- ключ АПИ (во вкладке Headers): x-apikey = jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM=
Запускаем запрос и получаем детальную информацию по запросу со списком вложений:
Использование других инструментов для загрузки вложений
Подавляющее большинство утилит и библиотек для работы с HTTP запросами умеют отправлять данные в формате multipart/form-data (как правило, он является форматом по умолчанию для POST запросов).
Разберем несколько типовых примеров.
Во всех примерах будем использовать следующие параметры:
- id - идентификатор запроса на перевозку
- token - авторизационный токен, ранее полученный из метода POST /api/v1/account/login
Консольные утилиты (на пример cURL)
Перед использованием, рекомендуем ознакомиться со статьей Особенности использования API с помощью консольных утилит.
curl --location --request POST 'https://testdev2.logistpro.su/api/v1/tender/{id}/upload' \ --header 'x-apikey: jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM=' \ --header 'Cookie: .AspNet.ApplicationCookie={token}' \ --form 'Type="Накладная"' \ --form 'File=@"/path/to/Накладная_Н-123 (test).pdf"'
Библиотеки языков высокого уровня
C# (с использованием "RestSharp")
var client = new RestClient("https://testdev2.logistpro.su/api/v1/tender/{id}/upload"); var request = new RestRequest(Method.POST); request.AddHeader("x-apikey", "jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM="); request.AddHeader("Cookie", ".AspNet.ApplicationCookie={token}"); request.AddParameter("Type", "Накладная"); request.AddFile("File", "/path/to/Накладная_Н-123 (test).pdf"); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
Python (с использованием "requests")
import requests url = "https://testdev2.logistpro.su/api/v1/tender/{id}/upload" payload={'Type': 'Накладная'} files=[ ('File',('Накладная_Н-123 (test).pdf',open('/path/to/Накладная_Н-123 (test).pdf','rb'),'application/pdf')) ] headers = { 'x-apikey': 'jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM=', 'Cookie': '.AspNet.ApplicationCookie={token}' } response = requests.request("POST", url, headers=headers, data=payload, files=files) print(response.text)
1С:Предприятие 8+ (с использованием Connector)
Заголовки = Новый Соответствие; Заголовки.Вставить("x-apikey", "jn/PYDwYKV7INbTQwZFdpXe4LEuYvBg9fgsIdykDigM="); Cookies = Новый Массив; Cookies.Добавить(Новый Структура("Наименование,Значение", ".AspNet.ApplicationCookie", "{token}")); Файлы = Новый Массив; Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "File", Base64Значение("{содержимое файла}"), "Накладная_Н-123 (test).pdf")); Данные = Новый Структура("field1,field2", "Type", "Накладная"); Результат = КоннекторHTTP.Post("https://testdev2.logistpro.su/api/v1/tender/{id}/upload", Неопределено, Новый Структура("Заголовки,Cookies,Файлы,Данные", Заголовки, Cookies, Файлы, Данные));