Где добавить заголовки к запросу POST в angular5? - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь загрузить изображение и отправить запрос на отправку в контроллер rest, чтобы он мог его сохранить.

Я работаю с jwt, поэтому мне нужно вставить заголовок JWT в запрос POST.

это UploadFile.service.ts

pushFileToStorage(file: File): Observable<HttpEvent<{}>> {

    if(this.authService.getToken()==null) {
      this.authService.loadToken();
    }
    const formdata: FormData = new FormData();

    formdata.append('file', file);

    const req = new HttpRequest('POST', this.host+'/post', {
  reportProgress: true,
  responseType: 'text'
});

    return this.http.request(req);
  }

Я хочу знать, где я могу добавить заголовок:

{headers:new HttpHeaders({'Authorization':this.authService.getToken()})} 

в запросе на публикацию, я пытался добавить его, {reportProgres ..}, но это кажется неправильным, так как я получаю ошибки об этом заголовке.

Есть идеи?

Это то, что я пытаюсь, но это похоже на 'init' вместо опции:

enter image description here

Я использую HTTPCLIENT

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Если вам нужно часто устанавливать заголовок, вы можете использовать перехватчики .

@Injectable()
export class TokenInterceptor implements HttpInterceptor {

    constructor(private authService: AuthService) { }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
        const req = r.clone({
            headers: r.headers.set('Authorization', this.authService.getToken()),
            body: req.body
        });
        return next.handle(req);
    }
}

export const tokenInterceptorProvider = {
    provide: HTTP_INTERCEPTORS,
    useClass: TokenInterceptor,
    multi: true
};

Добавьте его к providers модуля.

@NgModule({
     providers: [tokenInterceptorProvider]
})
0 голосов
/ 24 июня 2018
constructor(private http: Http) { }
  let neededHeaders = new HttpHeaders(); 
  neededHeaders.append('Authorization', this.authService.getToken());
  const req = this.http.post(this.host+'/post', body, {headers: neededHeaders, reportProgress: true, responseType: 'text'});

Из документации

post(url: string, body: any | null, options: {
  headers?: HttpHeaders | {
        [header: string]: string | string[];
    };
   reportProgress?: boolean;
   responseType: 'text';
});
...