Как получить байтовые и строковые данные одновременно? - PullRequest
1 голос
/ 01 мая 2019

Можно ли одновременно получать байтовые и строковые данные в ответе HTTP?Я не могу смешать два слова в json, но у вас есть идея:

private async getFile(): Promise<{ data: Blob, checksum: string }> {

  return this.http.get('some url/getfile...', {
    'headers': accessToken
  }).pipe(timeout(10000)).toPromise().then(res => {
    if (res['status'] === 200 && res['body']) {
      return {
        data: res['body']['data'],
        checksum: res['body']['checksum']
      };
    }
    return undefined;
  }).catch(() => undefined);

}

Как правильно?


Мои идеи:

Должен ли сервер поместить контрольную сумму в заголовок ответа?

Или он также должен отправлять контрольную сумму в байтах?Если да, то как отделить его от фактических данных?

Или что, если бы я объединил их в одном потоке байтов и, например, если для создания контрольной суммы использовался md5, я бы знал, что первое (илипоследнее) 128 бит (= 16 байт?) - это контрольная сумма, остальное - фактические данные.

Чего я не хочу, так это (1) сделать это с помощью отдельных запросов (2) поместить контрольную сумму вкакой-нибудь текстовый файл на стороне сервера и заархивируйте его вместе с реальным файлом, затем разархивируйте архив на стороне клиента.

1 Ответ

1 голос
/ 01 мая 2019

Заголовок Content-MD5 - вещь, которая используется для этой цели как при загрузке, так и при загрузке: https://tools.ietf.org/html/rfc1864

Как правило, заголовки предназначены для небольших бит метаданных, относящихся к вашему запросу. Это полностью допустимый случай использования заголовка, если вы чувствуете, что гарантируется дополнительная безопасность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...