We use cookies to enhance your experience on the site
CodeWorlds

HTTP Request Options

Headers and Options

1import { HttpHeaders, HttpContext, HttpContextToken } from '@angular/common/http';
2
3// Custom headers
4const headers = new HttpHeaders()
5  .set('Content-Type', 'application/json')
6  .set('X-Custom-Header', 'CustomValue');
7
8this.http.post(url, data, { headers });
9
10// Context tokens for interceptors
11export const SKIP_AUTH = new HttpContextToken<boolean>(() => false);
12
13this.http.get(url, {
14  context: new HttpContext().set(SKIP_AUTH, true)
15});
16
17// Observing progress
18this.http.post(url, data, {
19  reportProgress: true,
20  observe: 'events'
21}).subscribe(event => {
22  if (event.type === HttpEventType.UploadProgress) {
23    const progress = Math.round(100 * event.loaded / event.total!);
24    console.log(\`Upload: \${progress}%\`);
25  }
26});

Response Types

1// Default - JSON body
2this.http.get<Samurai[]>(url);  // Observable<Samurai[]>
3
4// Full response
5this.http.get<Samurai[]>(url, { observe: 'response' });
6// Observable<HttpResponse<Samurai[]>>
7
8// Text
9this.http.get(url, { responseType: 'text' });  // Observable<string>
10
11// Blob (files)
12this.http.get(url, { responseType: 'blob' });  // Observable<Blob>
13
14// ArrayBuffer
15this.http.get(url, { responseType: 'arraybuffer' });  // Observable<ArrayBuffer>

File Upload

1uploadFile(file: File): Observable<UploadResponse> {
2  const formData = new FormData();
3  formData.append('file', file, file.name);
4
5  return this.http.post<UploadResponse>('/api/upload', formData, {
6    reportProgress: true,
7    observe: 'events'
8  }).pipe(
9    filter(event => event.type === HttpEventType.Response),
10    map(event => (event as HttpResponse<UploadResponse>).body!)
11  );
12}
Go to CodeWorlds