Angular 5 - Api Swagger body responseType blob - PullRequest
0 голосов
/ 26 марта 2020

У меня есть приложение, которое вызывает API, который возвращает файлы и сжимает их в ZIP-файл.

Я создал свой собственный сервис, и он отлично работает.

return this.http.get(this.rootUrl + '/api/Files/DownloadFile?files=' + fileSelected + '&user=' + user, { responseType: 'blob' as 'json' }); // working ok

Здесь Ответ API - это объект BLOB-объекта, как и должно быть.

Но когда я пытаюсь сделать то же самое, используя сгенерированный сервис, он больше не работает.

let req = new HttpRequest<any>(
    'GET',
    this.rootUrl + `/api/Files/DownloadFile`, 
    __body, 
    {
    headers: __headers,
    params: __params,
    responseType: 'text'
}
); // not working ok

Сервис возвращает мне значение NULL, однако в инспекторе chrome в ответе на вызов API он показывает странные символы.

this.filesService.DownloadFile({"files": ids, "user": this.user}).subscribe(
    data => {
        console.log(data); // data value is null but in the response I see strange characters
    },
    err => { 
        console.log(err);
    }
);

Это нормально, поскольку responseType службы swagger имеет значение "text", я пытался вручную изменить contentType на «blob» (спецификации swagger) или «blob as json» (angular 5), но он не работал нормально.

Возможно ли это решить с Angular используя сервис, сгенерированный swagger или я должен касаться API? Спасибо

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