top of page

HTTP Interceptor para solicitudes de API en Flutter

Alejandro Carrazana


Diagrama de intercepcion de HTTP
Flutter Interceptor

Los Interceptores HTTP son componentes que permiten manipular y personalizar solicitudes y respuestas HTTP antes de que lleguen o salgan de la aplicación. Tener interceptores HTTP en una aplicación puede responder a varias preguntas y problemas, incluyendo:

  1. ¿Cómo agregar encabezados de autenticación a las solicitudes HTTP?

  2. ¿Cómo manipular errores de red y devolver una respuesta personalizada?

  3. ¿Cómo monitorizar y registrar la actividad de red en la aplicación?

  4. ¿Cómo reducir la cantidad de solicitudes necesarias mediante el uso de caché?

  5. ¿Cómo mejorar la velocidad de la red comprimiendo las respuestas HTTP?

Estos son solo algunos ejemplos de las tareas que pueden realizar los interceptores HTTP en una aplicación. La implementación de interceptores permite a los desarrolladores tener un mayor control sobre la forma en que se realiza la comunicación de red en la aplicación, lo que puede mejorar la seguridad, la eficiencia y la experiencia de usuario.


¿Qué son interceptores HTTP?


Los interceptores HTTP son un concepto de programación que se utiliza en aplicaciones web y móviles. Un interceptor es una función que se invoca automáticamente cada vez que se realiza una solicitud HTTP o se recibe una respuesta HTTP.


Estos interceptores se utilizan para realizar tareas comunes en todas o en muchas solicitudes o respuestas, como agregar cabeceras a la solicitud, manipular la respuesta antes de devolverla a la aplicación, etc. Los interceptores HTTP son una herramienta útil para el desarrollo de aplicaciones web y móviles.


Tipos de paquetes de interceptores HTTP para Flutter más populares


En Flutter, los interceptores se pueden implementar mediante bibliotecas o paquetes de clientes HTTP. Estos paquetes permiten a los desarrolladores definir y personalizar interceptores para cumplir con sus necesidades específicas.


En Flutter, algunos de los paquetes de interceptores HTTP más populares incluyen:

  1. Dio: una biblioteca de cliente HTTP altamente personalizable y flexible que admite interceptores.

  2. Http: una biblioteca de cliente HTTP simple y fácil de usar que admite interceptores.

  3. Chopper: una biblioteca de cliente HTTP basada en Dart que utiliza interceptores para facilitar la personalización y el manejo de la red.

  4. Http Interceptor: un paquete de Flutter que permite a los desarrolladores implementar y componer interceptores personalizados.

  5. Retrofit: una biblioteca de cliente HTTP que permite a los desarrolladores definir y personalizar las solicitudes y respuestas HTTP utilizando una sintaxis similar a Retrofit de Android.

Estos son solo algunos de los paquetes de interceptores HTTP más populares para Flutter. Hay muchas otras opciones disponibles, por lo que es importante elegir el que mejor se adapte a las necesidades de su proyecto.


Implementación de un HTTP Interceptor para una aplicación Flutter


En el siguiente ejemplo expondremos la implementación del paquete http_interceptor para controlar las solicitudes y respuestas HTTP en la aplicación.


Primero creamos el archivo interceptor_client.dart que contiene la clase InterceptorClient. Esta clase implementa la clase InterceptorContract, pudiendo manipular las solicitudes y respuestas HTTP con los métodos interceptRequest e interceptResponse respectivamente, como se muestra:

import 'package:http_interceptor/http_interceptor.dart';

class InterceptorClient implements InterceptorContract {
 @override
 Future<RequestData> interceptRequest({required RequestData data}) async {
   return data;
 }

 @override
 Future<ResponseData> interceptResponse({required ResponseData data}) async {
   switch (data.statusCode) {
     case 200:
       break;
     case 400:
       break;
     case 401:
       break;
     case 403:
       break;
     case 404:
       break;
     case 422:
       break;
     case 500:
       break;
     case 501:
       break;
     case 502:
       break;
     case 503:
       break;
     default:
       break;
   }
   return data;
 }
}

Además, resulta necesario crear un objeto del tipo InterceptedClient que reciba como configuración el interceptor que ya creamos.

class InterceptorService {
 static InterceptedClient client = InterceptedClient.build(interceptors: [
   InterceptorClient(),
 ]);
}

De esta manera, se puede emplear el interceptor en el control de las solicitudes y respuestas HTTP: get, post, put, delete head, patch, read, send, readBytes:

InterceptorService.client.get(...);
InterceptorService.client.post(...);
InterceptorService.client.put(...);

Para más información sobre este paquete puede visitar la documentación oficial en GitHub.


¡Síguenos para más información sobre el desarrollo de aplicaciones con Flutter!

Contacto
Email
Telefono
ubicacion

info@octa.dev
jobs@octa.dev

Uruguay: +598 95 484 353

USA: +1 (307) 209 9642

Uruguay: Sinergia Design, Colonia 2235, Montevideo 11200.
USA: Coffeen Ave 1200, Sheridan WY 82801.

  • LinkedIn
  • X
  • Instagram
  • Facebook

¡Gracias por tu mensaje!

CUTI
Uruguay Technology
CUF
bottom of page