Как передать другой Content-Type, когда в intercepet мы помещаем content type = 'Content-Type': 'application / json', - PullRequest
0 голосов
/ 15 февраля 2019

, поэтому в моем всем API-запросе мы отправляем 'Content-Type': 'application/json',

, но в особом случае при загрузке файла нам нужно отправить conent-type: Content-Type: multipart/form-data;

в противном случае мыполучая ошибку вроде:

message: "Unable to translate bytes [83] at index 152 from specified code page to Unicode."

мы создаем перехватчик, есть ли способ переопределить тип содержимого перехватчика - как вы справляетесь с вашим проектом?или любое предложение?

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    let headers = new HttpHeaders({

      'Content-Type': 'application/json',
    });
          headers = headers.append('Authorization', `Bearer ${accessToken}`);
        }
      }
    }
const cloneReq = req.clone({ headers });

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы можете попробовать что-то вроде этого.Попробуйте проверить URL-адрес, и, если он совпадает с URL-адресом вашей файловой загрузки, создайте заголовок с другим типом содержимого для этого вызова.

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    let headers = new HttpHeaders({
      'Content-Type': 'application/json',
    });
    // Set different header in case of file upload URL
    if(req.url && req.url.indexOf("fileupload") !== -1) {
        headers = new HttpHeaders({
            'Content-Type': 'multipart/form-data',
        });
    }
}
const cloneReq = req.clone({ headers });
0 голосов
/ 15 февраля 2019

По вашему вопросу. Вы чувствуете, что хотите условно добавить заголовки к вашему запросу.Вы можете сделать это с помощью cloning и добавив new set of headers

intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  if(specialCondition){
      const modifiedReq= req.clone({
      headers: new HttpHeaders({
        'Content-Type':  'multipart/form-data',
        'Authorization': 'Bearer ${accessToken}'
      })
    });
   return next.handle(modifiedReq);
}    
  return next.handle(req);
}  

. specialCondition должен исходить от вас, исходя из требований, таких как конкретный URL или что-то подобное.

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