Llamadas a API
Este proyecto emplea el método request para efectuar llamadas a APIs. Este método se encuentra dentro de un servicio denominado ApiService, ubicado en lib/services/.
Uso de la clase
Importación
-
Para utilizar el servicio ApiService debemos importarlo:
import 'package:togie/services/api_service.dart';
Petición GET
Para realizar una solicitud GET a una API, utiliza el método request de la clase ApiService de la siguiente manera:
final response = await ApiService.request("/endpoint", params: {"paramA": "valueA"});o con los parámetros directamente en el endpoint
final response = await ApiService.request("/endpoint/${value}");El método request recibe un path como argumento y, de manera opcional, permite incluir parámetros de consulta en params. Luego, realiza una solicitud GET a la URL correspondiente. El resultado se guarda en la variable response, que es una instancia de Response de Dio.
Petición POST
Para realizar una solicitud POST, usa el método request de la siguiente manera:
final response = await ApiService().request( "/endpoint", body: {"keyA": valueA, "keyA": valueA},);El método request acepta un path y un objeto body que contiene los datos que se enviarán en la solicitud.
Petición PUT
Para realizar una solicitud PUT, utiliza el método request de esta manera:
final response = await ApiService().request( "/endpoint", putBody: {"keyA": newValueA, "keyA": newValueA},);El método request recibe un path y un objeto putBody, que contiene los datos a enviar en la solicitud PUT.
Petición DELETE
final response = await ApiService().request( "/endpoint", deleteBody: {"key": value},);El método request recibe un path y un objeto deleteBody, que contiene los datos a enviar en la solicitud DELETE.
Nota
- GET: Envía path y params (sin cuerpo) o con la opción de pasar directamente los parámetros en el path.
Respuesta
La variable response ofrece varios métodos y propiedades que son útiles para gestionar la respuesta de una solicitud.
response.data: Contiene el cuerpo de la respuesta.response.statusCode: Retorna el código de estado HTTP de la respuesta (200, 404, 500, etc.).response.statusMessage: Retorna el mensaje de estado HTTP de la respuesta.
Ejemplo
final response = await ApiService.request("/endpoint", params: {"param": "value"});if (response.statusCode == 200) { // Accediendo al contenido de la respuesta. final data = response.data; // Uso del contenido de la respuesta para generar una instancia. Modelo entity = Modelo.fromJson(data); print("Datos recibidos: $data");} else { // Gestión de errores print("Error: ${response.statusCode} - ${response.statusMessage}");}