Uri.https în Dart

Adrese web (Uri) Dart 1.0

Construiește rapid o adresă https:// (sau http:// cu Uri.http) din domeniu, cale și parametri.

Sintaxă
Uri.https(String authority, [String unencodedPath = '', Map<String, dynamic>? queryParameters])
Uri.http(String authority, [String unencodedPath = '', Map<String, dynamic>? queryParameters])

Ce face Uri.https

Uri.https('api.exemplu.ro', '/v1/vreme', {'oras': 'Iași'}) creează adresa https://api.exemplu.ro/v1/vreme?oras=Ia%C8%99i. Primul argument este „autoritatea”: domeniul, opțional cu port ('localhost:8080'). Al doilea este calea, scrisă normal, iar al treilea parametrii.

Calea și parametrii sunt codificați automat, deci poți pune spații și diacritice fără grijă. Valorile parametrilor sunt texte sau liste de texte (pentru parametri repetați). Uri.http funcționează la fel, cu schema http. Este forma cerută de pachetul http: http.get(Uri.https(...)).

Parametri

Parametru Descriere
authority Domeniul, opțional cu utilizator și port.
unencodedPath Calea, necodificată.
queryParameters Parametrii: valori String sau Iterable<String>.

Ce returnează

Un Uri.

Exemple

Exemplul 1: Adrese pentru un API

void main() {
  var vreme = Uri.https('api.exemplu.ro', '/v1/vreme', {'oras': 'Iași', 'zile': '3'});
  print(vreme);
  print(vreme.host);
  print(vreme.queryParameters);
  var local = Uri.http('localhost:8080', '/api/elevi');
  print(local);
  print(local.port);
}

Rezultat

https://api.exemplu.ro/v1/vreme?oras=Ia%C8%99i&zile=3
api.exemplu.ro
{oras: Iași, zile: 3}
http://localhost:8080/api/elevi
8080

Exemplul 2: Căutare cu filtre multiple

Uri cautare(String text, List<String> orase, int pagina) => Uri.https(
      'anunturi.exemplu.ro',
      '/cauta/apartamente de închiriat',
      {'q': text, 'oras': orase, 'pagina': '$pagina'},
    );

void main() {
  var u = cautare('2 camere', ['Iași', 'Cluj'], 1);
  print(u);
  print(u.path);
  print(u.queryParametersAll['oras']);
}

Rezultat

https://anunturi.exemplu.ro/cauta/apartamente%20de%20%C3%AEnchiriat?q=2+camere&oras=Ia%C8%99i&oras=Cluj&pagina=1
/cauta/apartamente%20de%20%C3%AEnchiriat
[Iași, Cluj]

Greșeli frecvente

  • Pui https:// în primul argument: Uri.https('https://site.ro', ...) dă o adresă greșită. Primul argument este doar domeniul.
  • Dai valori numerice în parametri: {'pagina': 2} aruncă eroare la rulare. Valorile trebuie să fie texte: '2' sau '$pagina'.

Comenzi înrudite

  • Uri: O adresă web (URL) sau de fișier, desfăcută în părți: schemă, host, port, cale, parametri și fragment.
  • Uri.queryParameters: queryParameters dă parametrii de după ? ca Map, decodificați; pathSegments dă bucățile căii, ca listă.
  • Uri.encodeComponent: Codifică un text ca să poată sta în siguranță într-o bucată de URL (spații, diacritice, &, /) și invers.