URL-parser

Als een webhook misgaat of een trackinglink de verkeerde parameters meestuurt, is het snelst om de URL op te splitsen en elk onderdeel te lezen. Plak een willekeurige URL en deze parser splitst hem in zijn onderdelen: schema, gebruikersnaam en wachtwoord, host, poort, pad, querystring en fragment, en vouwt de query uit in een tabel met elk sleutel-waardepaar. Hij draait op onze server met de standaard-URL-parser van PHP, dus je ziet precies hoe een PHP-backend dezelfde link zou lezen.

Zo parse je een URL

  1. 1

    Plak de URL

    Voer een willekeurige URL in, absoluut of relatief. Er is niets om op te klikken: hij wordt geparset terwijl je typt.

  2. 2

    Lees de onderdelen

    De tabel vult zich met het schema, de host, de poort, de gebruiker, het wachtwoord, het pad, de query en het fragment die zijn gevonden. Lege onderdelen tonen een streepje.

  3. 3

    Vouw de query uit

    Elk `key=value`-paar verschijnt op een eigen rij, met percent-encoding en `+` gedecodeerd naar echte tekens.

  4. 4

    Kopieer de parameters

    De kopieerknop pakt alle queryparameters in één keer als `key=value`-regels, klaar om in een API-client te plakken.

Anatomie van een URL

Neem deze URL: https://user:pass@api.example.com:8443/v1/users?page=2&sort=name#profile. De parser splitst hem op in:

Onderdeel Waarde
scheme https
user user
pass pass
host api.example.com
port 8443
path /v1/users
query page=2&sort=name
fragment profile

Daarna wordt de querystring uitgevouwen in een eigen tabel: page = 2 en sort = name.

Hoe de querystring wordt gelezen

  • Waarden worden uit de percent-encoding gedecodeerd en + wordt een spatie, dus q=hello%20world en q=hello+world worden allebei gelezen als hello world.
  • Een paar wordt gesplitst op zijn eerste =, dus token=a=b=c behoudt a=b=c als waarde.
  • Herhaalde sleutels behouden alleen de laatste waarde: ?id=1&id=2 geeft id = 2. Gebruik de array-syntaxis id[]=1&id[]=2 om elke waarde te behouden; die wordt als lijst weergegeven.
  • Sleutels met vierkante haken zoals filter[status]=open worden een geneste structuur, weergegeven als JSON.

Poorten, paden en fragmenten

  • De poort wordt precies zo getoond als hij is geschreven. Er wordt niets toegevoegd of verwijderd, dus :443 verschijnt als 443 en een URL zonder poort laat de rij leeg.
  • Een afsluitende schuine streep verandert het pad: https://a.com heeft een leeg pad, terwijl https://a.com/ het pad / heeft.
  • Het fragment (na #) is een waarde die alleen de browser gebruikt om naar een anker te springen of een client-side router aan te sturen. Het bereikt nooit de server, dus alles wat een backend moet lezen hoort in de querystring.
  • De host wordt precies teruggegeven zoals hij is ingevoerd; deze parser zet geïnternationaliseerde (niet-ASCII) domeinen niet om naar of van Punycode.

Veelgestelde vragen

Ja. Een relatieve link zoals /v1/users?ref=nav heeft geen schema en geen host, dus die rijen blijven leeg terwijl het pad en de query toch worden ingevuld. Alleen een verkeerd opgebouwde URL, bijvoorbeeld met een niet-numerieke poort zoals http://a.com:port, wordt volledig geweigerd.

Alleen de laatste waarde wordt bewaard, dus ?id=1&id=2 geeft id = 2, precies zoals een PHP-backend het zou lezen. Als je elke waarde nodig hebt, gebruik dan de array-syntaxis id[]=1&id[]=2 en ze verschijnen als een lijst.

De parser toont de poort precies zoals hij is geschreven. Hij verwijdert nooit een standaardpoort en voegt een ontbrekende nooit toe, dus een URL zonder poort toont een lege rij en https://a.com:443 toont 443.

De URL wordt naar onze server gestuurd om te worden geparset, want deze tool draait op de server en niet alleen in je browser. We bewaren de URL’s zelf niet; we registreren alleen anoniem dat de parser is gebruikt.

Gerelateerde tools

Tool beschikbaar in andere talen