Saltearse al contenido

Api Service

Importar la Clase

Asegúrate de importar la clase ApiService en tu archivo Dart:

import 'package:academic/services/api_service.dart';

Realizar una solicitud GET

Para realizar una solicitud GET a una API, utiliza la función httpGet de la siguiente manera:

final response = await ApiService().httpGet("/end/point");
  • httpGet toma una URL como argumento y realiza una solicitud GET a esa URL.
  • La respuesta se almacena en la variable response, la cual es una instancia de http.Response.

Realizar una solicitud POST

Para realizar una solicitud POST a una API con un cuerpo JSON, utiliza la función httpPost de la siguiente manera:

Object body = jsonEncode(<String, dynamic>{
"id_action": 12,
"message": "Aqui va un mensaje",
});
final response = await ApiService().httpPost("/end/point", body);
  • httpPost toma dos argumentos: la URL de la API y el cuerpo de la solicitud en formato JSON.
  • El cuerpo de la solicitud se define como un objeto JSON utilizando jsonEncode.
  • La respuesta se almacena en la variable response, la cual es una instancia de http.Response.

Manipulación de la Respuesta

Una vez que hayas realizado la solicitud, puedes manipular la respuesta según sea necesario. Esto podría incluir el análisis del contenido JSON de la respuesta, el manejo de errores y la actualización de la interfaz de usuario con los datos recibidos.

Aquí hay un ejemplo básico de cómo puedes analizar una respuesta JSON y acceder a sus datos:

if (response.statusCode == 200) {
// La solicitud fue exitosa (código de estado 200).
final jsonResponse = json.decode(response.body);
// Acceder a los datos específicos en la respuesta usando el modelo creado previamente.
// Si recibirás muchos datos de la petición, has una lista vacía, y añade cada modelo.
List<modelo> list = [];
jsonDecode(response.body)['data'].forEach((v) => list.add(modelo.fromJson(v)));
// Si solo será uno lo que recibirás, recíbelo de la siguiente forma:
modelo.fromJson(jsonDecode(response.body)['data'][0]);
// Realizar acciones adicionales con los datos...
} else {
// La solicitud falló con un código de estado diferente de 200.
throw 'Hubo un error al hacer la petición';
}

Error

Dentro de la clase ApiService() hay validaciones por si el dispositivo se queda sin internet, mostrando un modal con el mensaje Es necesario estar conectado al internet para usar la aplicación., y retornando la siguiente respuesta:

http.Response("", 204)

Si se mostrara una respuesta de error, si la respuesta no es 200, retorna un throw ‘mensaje de error.’. No uses un throw Exception().