- 1

Conexión a REST APIs con Angular HTTP y buenas prácticas
02:58 - 2

Solicitudes GET en APIs con Angular: Obtener Productos
10:41 - 3

Consulta de Producto Específico en eCommerce con Angular
11:31 - 4

Integración de Swiper en Angular para Galería de Productos
08:12 - 5

Creación de Productos con POST y Data Transfer Objects en Angular
15:59 - 6

Actualización de Datos con Métodos PUT y PATCH en APIs
14:23 - 7

Eliminar productos con solicitudes DELETE en Angular
06:04 - 8

Paginación de Productos con Parámetros URL en Angular
12:45 - 9

Ventajas de los Observables sobre Promesas en Angular
12:22 - 10

Implementación de Retry con Observadores en Angular
03:23
Creación de Productos con POST y Data Transfer Objects en Angular
Clase 5 de 23 • Curso de Consumo de APIs REST con Angular
Contenido del curso
- 11

Solución de Problemas CORS en Aplicaciones Angular
11:33 - 12

Gestión de Ambientes en Angular: Desarrollo vs Producción
05:06 - 13

Manejo de Errores en Observables con Angular
12:06 - 14

Transformaciones de Datos en el Frontend con Map y Pipes
06:02 - 15

Evitando el Callback Hell con SwitchMap y ZIP en Observables
10:42
- 16

Autenticación con JWT: Implementación y Gestión de Sesiones en APIs
19:43 - 17

Autenticación y Manejo de Tokens en Peticiones HTTP
09:31 - 18

Implementación de Interceptores en Angular para Medir Tiempos de Respuesta
08:03 - 19

Interceptores en Angular: Agregar Token Automáticamente
15:04 - 20

Uso de Contextos para Interceptores en Angular
05:50
Llega el momento de crear registros a través de una API y para esto, siempre se utiliza el verbo HTTP POST.
Tipado de Peticiones HTTP
Descubre a continuación cómo utilizar el cliente HTTP de angular para tipar tu solicitiud GET y crear un producto.
1. Crea interfaces para tipar el producto y su categoría
Siempre es aconsejable tipar los datos y evitar el uso del tipo any, ya que aumenta la posibilidad de errores en tu aplicación. Para esto, creamos varias interfaces para tipar el Producto y la Categoría del producto:
// interfaces producto.interface.ts
export interface Category {
idCategory: string;
category: string;
}
export interface Product {
id: number;
name: string;
precio: number;
description: string;
image: string;
category: Category;
}
Observa que la interfaz de Producto tiene un ID y una Category. Normalmente, una petición POST no recibe una ID ni tampoco un objeto del tipo category. El ID es autogenerable en la base de datos y la categoría suele recibirse solo el identificador de la misma.
2. Genera otra interfaz Producto
Para solucionar esto, puedes crear otra interfaz y gracias a características propias de TypeScript, puedes extender el uso de la interfaz Producto y omitir los campos que no sirven para una petición POST.
// interfaces producto.interface.ts
export interface CreateProducto extends Omit<Product, 'id' | 'category'> {
idCategory: string;
}
3. Logra tipar por completo tu solicitud POST
Ahora es posible tipar por completo tu solicitud POST. Tanto los datos que envías en el body de la petición como los datos que recibirás en la respuesta.
// services/api.service.ts
import { CreateProducto } from '../interfaces/producto.interface';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(
private http: HttpClient,
) { }
createProduct(body: CreateProducto): Observable<Producto> {
return this.http.post<Producto>(`https://example.com/api/productos`, body);
}
}
4. Importa los servicios e interfaces
Desde tu componente puedes importar el servicio, las interfaces que necesites y podrás crear los objetos y realizar la petición POST para crear el Producto.
// components/catalogo/catalogo.component.ts
createProduct(): void {
const body: CreateProducto = {
name: 'Nuevo producto',
precio: 100,
description: 'Descripción del producto',
image: 'https://example.com/image',
idCategory: '1'
};
this.apiService.createProduct(body)
.subscribe((p: Product) => {
// Guardamos el nuevo producto, en el Array de productos junto con los otros.
this.productos.push(p);
});
}
Este tipo de endpoints suele recibir un body con los datos que necesita el registro para construirse. En caso de éxito, el mismo tiene que devolver el objeto recientemente insertado en la base de datos para actualizar inmediatamente el front-end.
Contribución creada por: Kevin Fiorentino.