mcpField
A
angular-http

angular-http

github.com/oguzhan18Development7185 installsUpdated 31w ago
Repository

About angular-http

A skill for Angular HttpClient development, covering HTTP requests, interceptors, request context, cancellation, and response handling.

Key features

  1. 01Configure functional interceptors
  2. 02Use fetch through withFetch
  3. 03Set per-request HttpContext metadata
  4. 04Cancel requests with AbortSignal
  5. 05Type responses and handle errors

Use cases

  1. 01Attach authentication headers to requests
  2. 02Apply logging or error handling across requests
  3. 03Retry requests on flaky networks
  4. 04Cancel requests or set per-request flags

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-http

After installing, type/angular-httpin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/discussions/
_INDEX.md
references/docs/
_INDEX.md
references/issues/
_INDEX.md
references/releases/
_INDEX.md

Details

From the project README

@angular/common/http

Version: Angular 21 (2025) Tags: HTTP, REST, API, Interceptors

References: HttpClient • API • Interceptors

API Changes

This section documents recent version-specific API changes.

  • NEW: Functional interceptors — Use provideHttpClient(withInterceptors([...])) for modern interceptor setup source

  • NEW: withFetch — Use native fetch API with HttpClient source

  • NEW: withInterceptorsFromDi — Legacy interceptor support with functional approach

  • NEW: HttpContext tokens — Per-request metadata using HttpContextToken

  • NEW: AbortSignal support — Request cancellation with timeout support

  • DEPRECATED: Class-based HttpInterceptor — Migrate to functional interceptors

Best Practices

  • Use functional interceptors
// ✅ Modern functional interceptor
export const authInterceptor: HttpInterceptorFn = (req, next) => {
  const authService = inject(AuthService);
  const token = authService.getToken();
  
  if (token) {
    const authReq = req.clone({
      setHeaders: { Authorization: `Bearer ${token}` }
    });
    return next(authReq);
  }
  return next(req);
};

// Register
export const appConfig: ApplicationConfig = {
  providers: [
    provideHttpClient(withInterceptors([authInterceptor]))
  ]
};
  • Use interceptors for cross-cutting concerns — Authentication, logging, error handling
// Error interceptor with retry
export const errorInterceptor: HttpInterceptorFn = (req, next) => {
  return next(req).pipe(
    catchError((error: HttpErrorResponse) => {
      if (error.status === 401) {
        inject(Router).navigate(['/login']);
      }
      return throwError(() => error);
    })
  );
};
  • Use retry with backoff for flaky networks
import { retry, delay, catchError } from 'rxjs/operators';

http.get('/api/data').pipe(
  retry({ count: 3, delay: 1000 })
);
  • Use HttpContext for per-request flags
const cacheToken = new HttpContextToken<boolean>(() => false);

export const cacheInterceptor: HttpInterceptorFn = (req, next) => {
  if (req.context.get(cacheToken)) {
    // Check cache
  }
  return next(req);
};

// Usage
http.get('/api/data', {
  context: new HttpContext().set(cacheToken, true)
});
  • Use proper typing for HTTP responses
interface User {
  id: number;
  name: string;
}

http.get<User>('/api/user/1').subscribe(user => {
  console.log(user.name); // TypeScript knows the type
});
  • Use observe: 'response' for full HTTP response
http.get('/api/data', { observe: 'response' }).subscribe(response => {
  console.log(response.headers);
  console.log(response.body);
});
  • Handle errors globally
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
  handleError(error: Error) {
    // Log to error tracking service
    console.error(error);
  }
}

// Register
provideErrorHandler(GlobalErrorHandler)
  • Use withCredentials for CORS requests
http.get('/api/data', { withCredentials: true });

Comments

Markdown supported