En el vertiginoso mundo del desarrollo web, Angular se ha labrado un nicho importante. Si trabajas con Angular y APIs, probablemente te hayas encontrado con la necesidad de actualizar recursos en un servidor. Ahí es donde entran en juego las peticiones PUT de Angular. Tanto si eres un desarrollador experimentado como si estás empezando, entender cómo hacer peticiones PUT en Angular es crucial para asegurar que tus aplicaciones puedan comunicarse eficazmente con las APIs.
Entendiendo las peticiones PUT de Angular
En esencia, una petición PUT se utiliza para actualizar un recurso existente en el servidor. A diferencia de una petición POST, que se utiliza normalmente para crear nuevos recursos, una petición PUT reemplaza todo el recurso con los datos que envías. Esto significa que si solo quieres actualizar algunos campos de un recurso, necesitas enviar todo el recurso con los campos actualizados.
¿Por qué usar peticiones PUT?
Usar peticiones PUT en Angular tiene varias ventajas:
- Consistencia: Las peticiones PUT son idempotentes. Esto significa que no importa cuántas veces envíes la petición, el estado del recurso permanece igual.
- Claridad: PUT indica claramente que estás actualizando un recurso existente, haciendo que tu código sea más legible y mantenible.

Configurando tu proyecto de Angular
Antes de que puedas hacer una petición PUT, necesitas un proyecto de Angular. Si aún no tienes uno configurado, aquí tienes un resumen rápido de cómo empezar:
ng new angular-put-request-demo
cd angular-put-request-demo
ng serve
Ahora, tienes una aplicación básica de Angular en funcionamiento.
Haciendo tu primera petición PUT en Angular
Vamos a desglosar los pasos para hacer una petición PUT en Angular.
Paso 1: Importar HttpClientModule
Primero, necesitas importar el HttpClientModule
en tu aplicación Angular. Este módulo proporciona una API simplificada para la funcionalidad HTTP.
Abre app.module.ts
y añade la siguiente importación:
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
// your components here
],
imports: [
// other modules here
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Paso 2: Crear un servicio para las llamadas a la API
Crear un servicio para tus llamadas a la API ayuda a mantener tu código modular y reutilizable. Vamos a crear un servicio llamado ApiService
.
ng generate service api
En el recién creado api.service.ts
, inyecta el HttpClient
y crea un método para la petición PUT.
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ApiService {
private apiUrl = 'https://your-api-url.com/resources';
constructor(private http: HttpClient) { }
updateResource(id: number, resourceData: any): Observable<any> {
const url = `${this.apiUrl}/${id}`;
return this.http.put(url, resourceData);
}
}
En este servicio, definimos un método updateResource
que toma un id
y resourceData
, construye la URL apropiada, y hace una petición PUT para actualizar el recurso.
Integrando peticiones PUT en tu componente
Ahora que tu servicio está configurado, es hora de usarlo en un componente. Para este ejemplo, usaremos el AppComponent
.
Paso 3: Inyectar el ApiService
En tu app.component.ts
, inyecta el ApiService
y crea un método para llamar a la función updateResource
.
import { Component } from '@angular/core';
import { ApiService } from './api.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'angular-put-request-demo';
constructor(private apiService: ApiService) {}
updateResource() {
const id = 1; // example resource ID
const updatedData = {
name: 'Updated Resource Name',
description: 'Updated Resource Description'
};
this.apiService.updateResource(id, updatedData).subscribe(
response => {
console.log('Resource updated successfully', response);
},
error => {
console.error('Error updating resource', error);
}
);
}
}
En este componente, hemos creado un método updateResource
que llama al método updateResource
del ApiService
.
Paso 4: Añadir un disparador en la plantilla
Para disparar la actualización, añade un botón en tu app.component.html
.
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
<button (click)="updateResource()">Update Resource</button>
</div>
Manejando respuestas y errores
Manejar las respuestas y los errores es una parte importante de trabajar con APIs. En el ejemplo anterior, usamos subscribe
para manejar la respuesta y los errores.
Sin embargo, para aplicaciones más complejas, es posible que quieras usar catchError
de rxjs/operators
para manejar los errores de una manera más ágil.
Usando catchError para el manejo de errores
Primero, importa los operadores necesarios:
import { catchError } from 'rxjs/operators';
import { throwError } from 'rxjs';
Luego, actualiza el método updateResource
en api.service.ts
:
updateResource(id: number, resourceData: any): Observable<any> {
const url = `${this.apiUrl}/${id}`;
return this.http.put(url, resourceData).pipe(
catchError(this.handleError)
);
}
private handleError(error: any) {
console.error('An error occurred:', error);
return throwError(error);
}
Con esta configuración, cualquier error durante la petición PUT será capturado y manejado por handleError
, que puedes personalizar aún más para que se ajuste a tus necesidades.
Usando Apidog para la gestión de APIs
Cuando se trabaja con APIs, tener una herramienta fiable para gestionar y probar tus peticiones puede ahorrarte mucho tiempo y esfuerzo. Apidog es una excelente opción para este propósito. Proporciona una interfaz fácil de usar para crear, probar y documentar tus APIs. Además, ¡es de uso gratuito!
Beneficios de usar Apidog
- Pruebas fáciles: Prueba rápidamente tus APIs con una interfaz intuitiva.
- Documentación completa: Genera automáticamente documentación para tus APIs.
- Colaboración: Comparte las especificaciones de tu API con tu equipo sin esfuerzo.
Para empezar con Apidog, simplemente descárgalo gratis e intégralo en tu flujo de trabajo.
Cómo enviar una petición PUT de Angular usando Apidog
Para crear y probar una petición PUT en Apidog, puedes seguir estos pasos:
- Abrir Apidog: Abre Apidog y crea una nueva petición.

2. Especificar el método HTTP: Selecciona PUT como el método HTTP.

3. Definir la URL de la petición: Introduce la URL del recurso que quieres actualizar, añade las cabeceras de la petición y/o el cuerpo de la petición. Luego haz clic en el botón "Enviar" para enviar la petición PUT.

4. Comprobar la respuesta: Comprueba la respuesta del servidor para asegurarte de que la petición PUT fue exitosa.

Manejo avanzado de peticiones PUT
Hasta ahora, hemos cubierto los conceptos básicos de cómo hacer una petición PUT en Angular. Exploremos algunos temas avanzados que pueden ayudarte a ser aún más competente.
Optimizando el manejo de datos con modelos
Usar modelos de TypeScript puede ayudar a asegurar que tu manejo de datos sea de tipo seguro y más mantenible. Crea un modelo para tu recurso:
export interface Resource {
id: number;
name: string;
description: string;
}
Luego, actualiza tu servicio para usar este modelo:
import { Resource } from './resource.model';
updateResource(id: number, resourceData: Resource): Observable<Resource> {
const url = `${this.apiUrl}/${id}`;
return this.http.put<Resource>(url, resourceData).pipe(
catchError(this.handleError)
);
}
Actualizaciones parciales con peticiones PATCH
Si necesitas actualizar solo algunos campos de un recurso sin enviar todo el recurso, considera usar una petición PATCH en lugar de PUT. Aquí tienes cómo puedes modificar el servicio:
updateResourcePartially(id: number, partialData: Partial<Resource>): Observable<Resource> {
const url = `${this.apiUrl}/${id}`;
return this.http.patch<Resource>(url, partialData).pipe(
catchError(this.handleError)
);
}
Interceptores para la personalización de peticiones
Angular proporciona interceptores HTTP para modificar las peticiones globalmente. Puedes usar interceptores para añadir tokens de autenticación, manejar errores o registrar peticiones.
Primero, crea un interceptor:
ng generate interceptor http
En el http.interceptor.ts
generado, implementa la lógica del interceptor:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class HttpInterceptorService implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const clonedRequest = req.clone({
headers: req.headers.set('Authorization', 'Bearer your-token-here')
});
return next.handle(clonedRequest);
}
}
Luego, registra el interceptor en app.module.ts
:
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { HttpInterceptorService } from './http.interceptor';
@NgModule({
// other configurations
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true }
],
})
export class AppModule { }
Conclusión
Dominar las peticiones PUT de Angular es esencial para cualquier desarrollador que trabaje con APIs. Al entender los fundamentos y explorar técnicas avanzadas, puedes asegurar que tus aplicaciones sean robustas, eficientes y mantenibles. Recuerda aprovechar herramientas como Apidog para agilizar tus procesos de desarrollo y prueba de APIs.
Si aún no lo has hecho, descarga Apidog gratis y empieza a optimizar tus flujos de trabajo de API hoy mismo. ¡Feliz codificación!