отправка двух двоичных сообщений в одном запросе http rest - PullRequest
0 голосов
/ 17 декабря 2018

Служба REST запущена на сервере с использованием фляги Python.У меня есть клиент REST, который построен с использованием Java.Мне нужно отправить два двоичных сообщения в одном запросе HTTP HESTP.Причина в том, что они две, потому что они оба различаются по типу протобуф-сообщения, но связаны друг с другом и должны идти в одном HTTP-запросеКак мы можем сделать это на стороне отправки и получения.

1 Ответ

0 голосов
/ 17 декабря 2018

Самым простым вариантом здесь может быть простое объявление типа сообщения-оболочки:

message FooRequest {
    // remove "required" if using proto3 syntax
    required Request1MessageType part1 = 1;
    required Request2MessageType part2 = 2;
}

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

[len, 4 bytes little endian][message 1, len bytes][message 2]

и снова декодировать его на другом конце - т.е. взять первое4 байта и используйте это для вычисления диапазонов двух внутренних сообщений.Ожидая, что в будущем потребуются дополнительные сообщения, может * * * * * * иметь смысл включать префикс длины в каждое сообщение (т. Е. Также включать префикс длины для сообщения 2), но, строго говоря, этобудет избыточным в текущем случае.

...