CommunityProgramación y desarrollogithub.com

analogjs/angular-http

Implementa la obtención de datos HTTP en Angular v20+ usando resource(), httpResource() y HttpClient. Útil para llamadas a API, carga de datos con señales, manejo de solicitudes/respuestas e interceptores. Se activa en la obtención de datos, integración de API, estados de carga, manejo de errores o conversión de patrones HTTP basados en Observables a patrones basados en señales.

¿Qué es angular-http?

Esta habilidad está diseñada para desarrolladores que trabajan con Angular v20 o superior y necesitan implementar la obtención de datos HTTP utilizando las últimas primitivas reactivas basadas en señales (signals), como resource() y httpResource(), junto con el tradicional HttpClient. Su principal utilidad radica en modernizar el código Angular, reemplazando patrones antiguos basados en Observables (como los que usan RxJS con `subscribe` o `async pipe`) por un enfoque más declarativo y eficiente con señales. La habilidad cubre desde llamadas básicas a API hasta la gestión avanzada de estados de carga, errores, interceptores y conversión de código heredado. Funciona en cualquier plataforma que soporte Angular (web, mobile, server-side rendering) y es especialmente valiosa para equipos que buscan adoptar el nuevo modelo de reactividad de Angular. Al usar esta skill, el agente IA generará código que aprovecha la inmutabilidad, el rendimiento mejorado y la simplicidad de las señales, reduciendo la complejidad de la lógica de datos.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/analogjs/angular-skills/tree/main/skills/angular-http

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace angular-http?

Implementa la obtención de datos HTTP en Angular v20+ usando resource(), httpResource() y HttpClient. Útil para llamadas a API, carga de datos con señales, manejo de solicitudes/respuestas e interceptores. Se activa en la obtención de datos, integración de API, estados de carga, manejo de errores o conversión de patrones HTTP basados en Observables a patrones basados en señales.

¿Qué hace?

  • Proporciona guías y ejemplos para usar las nuevas APIs de Angular para la obtención de datos HTTP.
  • Ayuda a migrar código existente basado en Observables (HttpClient + subscribe) al nuevo enfoque basado en señales (resource() y httpResource()).
  • Maneja estados de carga, éxito y error de manera declarativa.
  • Integra interceptores HTTP para autenticación, logging, etc.

¿Por qué es útil?

  • Modernización: Adopta el nuevo modelo reactivo de Angular basado en señales, que es más simple y eficiente.
  • Rendimiento: Las señales reducen el sobreprocesamiento y mejoran la detección de cambios.
  • Legibilidad: El código es más declarativo y fácil de seguir.
  • Mantenibilidad: Simplifica la lógica de datos y reduce la complejidad de los componentes.

Plataformas compatibles

  • Angular v20+ (web, mobile, server-side rendering).
  • Cualquier proyecto que use Angular con @angular/core y @angular/common/http.

Cómo funciona

  1. resource(): Una función que crea una señal reactiva que puede obtener datos de forma asíncrona. Se usa con un loader que devuelve una promesa o un Observable.

    import { resource } from '@angular/core';
    
    const userResource = resource({
      request: () => ({ id: userId() }),
      loader: async ({ request }) => {
        const response = await fetch(`/api/users/${request.id}`);
        return response.json();
      }
    });
    
  2. httpResource(): Una extensión de resource() que usa HttpClient para hacer peticiones HTTP. Proporciona un loader predefinido que maneja la serialización, cabeceras, etc.

    import { httpResource } from '@angular/common/http';
    
    const users = httpResource(() => '/api/users');
    const user = httpResource(() => `/api/users/${id}`);
    
  3. HttpClient: Sigue siendo útil para casos avanzados o cuando se necesita más control. La skill muestra cómo combinarlo con señales.

  4. Interceptores: Se pueden usar como de costumbre con HttpClient y httpResource() para agregar lógica transversal (autenticación, logging, etc.).

Ejemplos de uso

Obtener datos con httpResource()

import { Component, inject } from '@angular/core';
import { httpResource } from '@angular/common/http';

@Component({
  selector: 'app-users',
  template: `
    @if (users.isLoading()) {
      <p>Cargando...</p>
    } @else if (users.error()) {
      <p>Error: {{ users.error() }}</p>
    } @else {
      <ul>
        @for (user of users.value(); track user.id) {
          <li>{{ user.name }}</li>
        }
      </ul>
    }
  `
})
export class UsersComponent {
  users = httpResource(() => '/api/users');
}

Migrar de Observable a señal

Antes (con Observable):

export class UsersComponent {
  private http = inject(HttpClient);
  users$ = this.http.get<User[]>('/api/users');
}

Después (con señal):

export class UsersComponent {
  users = httpResource<User[]>(() => '/api/users');
}

Con solicitud parametrizada

const userPosts = httpResource<Post[]>(() => ({
  url: '/api/posts',
  params: { userId: selectedUserId() }
}));

Manejo de errores

const data = httpResource(() => '/api/data');

// En la plantilla:
// @if (data.error()) { <p>Algo salió mal: {{ data.error().message }}</p> }

Notas importantes

  • httpResource() devuelve un objeto con propiedades: value, isLoading, error, status.
  • Las señales son reactivas: cualquier cambio en las dependencias (como userId()) activa una nueva petición.
  • Asegúrate de que tu proyecto use Angular v20+ y tenga @angular/common/http instalado.
  • Para más detalles, consulta la documentación oficial de Angular.

Activación

Esta skill se activa automáticamente cuando:

  • Se necesita obtener datos de una API en Angular.
  • Se usan señales y se quiere integrar HTTP.
  • Se migra código de Observable a señal.
  • Se configuran interceptores o manejo de errores HTTP.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

analogjs/angular-component

Create modern Angular standalone components following v20+ best practices. Use for building UI components with signal-based inputs/outputs, OnPush change detection, host bindings, content projection, and lifecycle hooks. Triggers on component creation, refactoring class-based inputs to signals, adding host bindings, or implementing accessible interactive components.

analogjs/angular-di

Implement dependency injection in Angular v20+ using inject(), injection tokens, and provider configuration. Use for service architecture, providing dependencies at different levels, creating injectable tokens, and managing singleton vs scoped services. Triggers on service creation, configuring providers, using injection tokens, or understanding DI hierarchy.

analogjs/angular-directives

Create custom directives in Angular v20+ for DOM manipulation and behavior extension. Use for attribute directives that modify element behavior/appearance, structural directives for portals/overlays, and host directives for composition. Triggers on creating reusable DOM behaviors, extending element functionality, or composing behaviors across components. Note - use native @if/@for/@switch for control flow, not custom structural directives.

analogjs/angular-forms

Build signal-based forms in Angular v21+ using the new Signal Forms API. Use for form creation with automatic two-way binding, schema-based validation, field state management, and dynamic forms. Triggers on form implementation, adding validation, creating multi-step forms, or building forms with conditional fields. Signal Forms are experimental but recommended for new Angular projects. Don't use for template-driven forms without signals or third-party form libraries like Formly or ngx-formly.

analogjs/angular-routing

Implement routing in Angular v20+ applications with lazy loading, functional guards, resolvers, and route parameters. Use for navigation setup, protected routes, route-based data loading, and nested routing. Triggers on route configuration, adding authentication guards, implementing lazy loading, or reading route parameters with signals.

analogjs/angular-signals

Implement signal-based reactive state management in Angular v20+. Use for creating reactive state with signal(), derived state with computed(), dependent state with linkedSignal(), and side effects with effect(). Triggers on state management questions, converting from BehaviorSubject/Observable patterns to signals, or implementing reactive data flows.

analogjs/angular-ssr

Implement server-side rendering and hydration in Angular v20+ using @angular/ssr. Use for SSR setup, hydration strategies, prerendering static pages, and handling browser-only APIs. Triggers on SSR configuration, fixing hydration mismatches, prerendering routes, or making code SSR-compatible.

analogjs/angular-testing

Write unit and integration tests for Angular v20+ applications using Vitest or Jasmine with TestBed and modern testing patterns. Use for testing components with signals, OnPush change detection, services with inject(), and HTTP interactions. Triggers on test creation, testing signal-based components, mocking dependencies, or setting up test infrastructure. Don't use for E2E testing with Cypress or Playwright, or for testing non-Angular JavaScript/TypeScript code.

analogjs/angular-tooling

Use Angular CLI and development tools effectively in Angular v20+ projects. Use for project setup, code generation, building, testing, and configuration. Triggers on creating new projects, generating components/services/modules, configuring builds, running tests, or optimizing production builds. Don't use for Nx workspace commands, custom Webpack configurations, or non-Angular CLI build systems like Vite standalone or esbuild direct usage.

Skills relacionados