Uri.resolve în Dart

Adrese web (Uri) Dart 1.0

Calculează adresa completă a unui link relativ (ca ../poza.png), pornind de la adresa curentă.

Sintaxă
Uri resolve(String reference)
Uri resolveUri(Uri reference)

Ce face Uri.resolve

Paginile web conțin des linkuri relative: poza.png, ../index.html, /contact. baza.resolve(link) calculează adresa absolută, exact cum face browserul. Cu baza https://site.ro/blog/articol/, linkul poza.png devine https://site.ro/blog/articol/poza.png.

Regulile: un link care începe cu / pornește de la rădăcina site-ului; ../ urcă un nivel; un link absolut (cu schemă) rămâne neschimbat. Contează bara finală a bazei: fără ea, ultimul segment este considerat fișier și este înlocuit. resolveUri primește un Uri în loc de text.

Parametri

Parametru Descriere
reference Linkul relativ sau absolut.

Ce returnează

Un Uri nou, absolut.

Exemple

Exemplul 1: Linkuri relative

void main() {
  var baza = Uri.parse('https://dexblog.ro/invata/dart/uri/');
  print(baza.resolve('poza.png'));
  print(baza.resolve('../string/'));
  print(baza.resolve('/despre'));
  print(baza.resolve('?pagina=2'));
  print(baza.resolve('https://alt-site.ro/x'));
  var fisier = Uri.parse('https://dexblog.ro/invata/index.html');
  print(fisier.resolve('dart/'));
}

Rezultat

https://dexblog.ro/invata/dart/uri/poza.png
String
despre
Uri
https://alt-site.ro/x https://dexblog.ro/invata/dart/

Exemplul 2: Linkurile absolute dintr-o pagină

void main() {
  var pagina = Uri.parse('https://exemplu.ro/magazin/telefoane/lista.html');
  var linkuri = ['detalii.html?id=5', '../accesorii/', '/cos', 'https://plata.ro/'];
  for (var l in linkuri) {
    print('$l → ${pagina.resolve(l)}');
  }
}

Rezultat

detalii.html?id=5 → https://exemplu.ro/magazin/telefoane/detalii.html?id=5
../accesorii/ → https://exemplu.ro/magazin/accesorii/
/cos → https://exemplu.ro/cos
https://plata.ro/ → https://plata.ro/

Greșeli frecvente

  • Uiți bara finală a bazei: Uri.parse('https://site.ro/blog').resolve('poza.png') dă https://site.ro/poza.png, nu /blog/poza.png.

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.replace: Returnează o copie a adresei în care sunt înlocuite doar părțile date (de exemplu parametrii sau calea).