Saltar al contenido principal

Realizar solicitudes autenticadas

Cómo obtener datos autorizados de un servicio web.

Para obtener datos de la mayoría de los servicios web, necesitas proporcionar autorización. Hay muchas maneras de hacer esto, pero quizás la más común utiliza la cabecera HTTP Authorization.

Agregar cabeceras de autorización

#

El paquete http proporciona una forma conveniente de agregar cabeceras a tus solicitudes. Alternativamente, puedes usar la clase HttpHeaders de la biblioteca dart:io.

dart
final response = await http.get(
  Uri.parse('https://jsonplaceholder.typicode.com/albums/1'),
  // Send authorization headers to the backend.
  headers: {HttpHeaders.authorizationHeader: 'Basic your_api_token_here'},
);

Ejemplo completo

#

Este ejemplo se basa en la receta Obtener datos de Internet.

dart
import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'package:http/http.dart' as http;

Future<Album> fetchAlbum() async {
  final response = await http.get(
    Uri.parse('https://jsonplaceholder.typicode.com/albums/1'),
    // Send authorization headers to the backend.
    headers: {HttpHeaders.authorizationHeader: 'Basic your_api_token_here'},
  );
  final responseJson = jsonDecode(response.body) as Map<String, dynamic>;

  return Album.fromJson(responseJson);
}

class Album {
  final int userId;
  final int id;
  final String title;

  const Album({required this.userId, required this.id, required this.title});

  factory Album.fromJson(Map<String, dynamic> json) {
    return switch (json) {
      {'userId': int userId, 'id': int id, 'title': String title} => Album(
        userId: userId,
        id: id,
        title: title,
      ),
      _ => throw const FormatException('Failed to load album.'),
    };
  }
}