С сайта хотят передавать заказ и PDF-файл с ним. Как лучше разрулить?

1. fixin 4281 20.03.25 15:34 Сейчас в теме
В 1С пишу HTTP сервис по принятию заказа.
Можно ли в один запрос запихнуть и заказ (JSON) и PDF-спецификацию к нему с сайта?
Или все же дробить на отдельные запросы?
Думаю, можно в секцию JSON через base64 закодировать файл, но он может большой получиться, это надо сжимать заголовок.
Можно извратиться и передавать файл ZIP, где JSON и PDF...
А в общем случае, если файлов несколько, как это делается? Можно сжать их в ZIP

Но допустим, даже если этот файл отдельно передавать, ведь у него тоже есть JSON - описание, например, не в адресную же строку запроса его пихать?
starik-2005; +1 Ответить
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. fixin 4281 20.03.25 15:45 Сейчас в теме
(2) а смысл, если там не получается экономии по объему. Насколько я понимаю "двоичные" данные там закодированы в BASE64 не сжато. Таким же образом можно и в поле JSON их запихнуть. И сжать потом GZIPом, как вариант.
4. Sashares 33 20.03.25 16:05 Сейчас в теме
(3)
Насколько я понимаю "двоичные" данные там закодированы в BASE64 не сжато.

Нет.
К base64 никакого отношения не имеет.
5. fixin 4281 20.03.25 16:14 Сейчас в теме
(4) ну то бишь байт-в-байт, а не по два байта на байт? и как это все в тексте живет?
6. SlavaKron 20.03.25 16:17 Сейчас в теме
(5)
по два байта на байт
Там в 1.5 раза увеличивается объем: 4 байта двоичных данных записываются 6 байтами в формате BASE64. Даже полтнее: 3 байта дд = 4 символа в base64
7. fixin 4281 20.03.25 16:21 Сейчас в теме
(6) ну то бишь то же самое. Просто BIN в POST запросе можно передать? Может реально ZIP-файл передавать с JSON и Всеми файлами?
8. Sashares 33 20.03.25 16:22 Сейчас в теме
(6) Все еще не понимаю, при чем тут base64.
9. SlavaKron 20.03.25 16:24 Сейчас в теме
(8) Оценить выигрыш от чистых двоичных данных перед base64, например.
10. Sashares 33 20.03.25 16:26 Сейчас в теме
(5) Сделайте пример из статьи - отправка текста и картинки, посмотрите что отправляется, в каком размере, в fiddler'e например это все видно.
11. fixin 4281 20.03.25 16:45 Сейчас в теме
(10) зачем делать, там и так понятно, что bin текстом кодируется.
12. Sashares 33 20.03.25 16:52 Сейчас в теме
(11) Тогда зачем спрашиваешь?
13. fixin 4281 20.03.25 17:54 Сейчас в теме
(12) Интересуюсь, как лучше данную задачу решить.
14. пользователь 20.03.25 19:17
Сообщение было скрыто модератором.
...
17. starik-2005 3167 25.03.25 12:53 Сейчас в теме
(1)
Но допустим, даже если этот файл отдельно передавать, ведь у него тоже есть JSON - описание, например, не в адресную же строку запроса его пихать?
В адресную строку пихаются идентификаторы. Если это заказ, то просто /api/zakaz/idзаказа, если файл к заказу, то /api/zakaz/idзаказа/file/idфайла
18. user1936660 25.03.25 13:21 Сейчас в теме
(17)
В адресную строку пихаются идентификаторы
Вы так, того и гляди, S3 хранилище с REST доступом придумаете...
19. starik-2005 3167 25.03.25 14:10 Сейчас в теме
(18)
REST
Так любой рест-сервис организовывается. С3 - это просто большой ящик с файлами.
20. user1936660 25.03.25 15:01 Сейчас в теме
(19)
большой ящик
Ну вот там вместо имен файлов уже идентификаторы появились. Ещё чуть, и корзины придумаете, версии...

А геня работу с multipart/form-data так и не осилит.
21. starik-2005 3167 25.03.25 15:20 Сейчас в теме
(20)
А геня работу с multipart/form-data так и не осилит.
Ну с учетом того, сколько он тут вопросов задает, то он прям вот растет!!! )))

ЗЫ: У меня коллеги в хорошей конторе тоже не особо в этом шарят. Хотя С3 ща запилили. Даже меня почти не спрашивали. Только при удалении вместо "ДЕЛЕТЕ" "ПАТЧ" посылали - копипаста не прошла )))
22. fixin 4281 25.03.25 15:28 Сейчас в теме
(20) я с ней работал, когда выгружал картинки на сайт. Только это не то, что нужно в данной задаче.
27. user1936660 25.03.25 15:38 Сейчас в теме
(22)
Только это не то, что нужно в данной задаче.
Конечно-конечно.
15. user653199_masenshi 25.03.25 09:18 Сейчас в теме
2 варианта.
1. передавать в JSON ссылку на файл. Файл на сайте. В 1С его подтягивать по ссылке
2. передавать 1 или массив файлов файл в PDF формате. Я передаю PDF без сжатия в 1С.

в обоих случаях 1 JSON. Мне больше нравится второй вариант. У меня так работает. HTTP метод: POST.
И кстати, самое главное. Тело запроса ведь шифруется и сжимается шифровальщиком. Так что никаких зипов
26. fixin 4281 25.03.25 15:38 Сейчас в теме
(15) да, ссылка на файл это в принципе интересно, но внутри запроса надо дергать еще раз запрос или очередь организовывать. На пустом месте себе проблемы находим.
16. starik-2005 3167 25.03.25 12:50 Сейчас в теме
Не знаю, чито автор мучаеццо:
СтруктураС = Новый Структура("JSON, PDF", ДанныеJSON, ДанныеPDF);
ХЗ = Новый ХранилищеЗначений(СтруктураС, Новый Сжатие(9));
23. fixin 4281 25.03.25 15:29 Сейчас в теме
(16) мы про загрузку с сайта, а не наоборот.
24. starik-2005 3167 25.03.25 15:31 Сейчас в теме
(23)
про загрузку с сайта, а не наоборот
Ну это можно и назад:
СтруктураС = ХЗ.Получить();
Ну а вебмастера уж смогут тебе это передать в красоте )))
25. fixin 4281 25.03.25 15:37 Сейчас в теме
(24) они смогут в GZIP, а не в специфичный для аборигенов 1С ХЗ, такой вариант уже предлагали.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот