¿Qué hace flutter-handling-http-and-json?
Ejecuta solicitudes HTTP y maneja la serialización JSON en una aplicación Flutter. Útil al integrar con APIs REST o analizar datos estructurados de fuentes externas.
Descripción
Esta habilidad proporciona funciones auxiliares para realizar solicitudes HTTP (GET, POST, PUT, DELETE) y convertir datos JSON a objetos Dart y viceversa. Incluye manejo de errores, encabezados personalizados y ejemplos de modelos de datos.
Instalación
Agrega la dependencia http a tu archivo pubspec.yaml:
dependencies:
http: ^1.2.1
Uso
Realizar una solicitud GET
import 'package:http/http.dart' as http;
import 'dart:convert';
Future<Map<String, dynamic>> fetchData(String url) async {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception('Failed to load data: ${response.statusCode}');
}
}
Publicar datos JSON (POST)
Future<http.Response> postData(String url, Map<String, dynamic> data) async {
final response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json',
},
body: jsonEncode(data),
);
return response;
}
Serialización de modelos
class User {
final int id;
final String name;
final String email;
User({required this.id, required this.name, required this.email});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'],
name: json['name'],
email: json['email'],
);
}
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'email': email,
};
}
// Ejemplo de uso
void main() async {
final data = await fetchData('https://api.example.com/users/1');
final user = User.fromJson(data);
print('Usuario: ${user.name}');
}
Manejo de Errores
Siempre verifica el código de estado de la respuesta HTTP. Usa bloques try-catch para manejar excepciones de red:
try {
final data = await fetchData('https://api.example.com/data');
} catch (e) {
print('Error: $e');
}