Treci la conținutul principal

Un handler pentru fiecare rută

Rutarea decide ce cod răspunde la ce cerere. Modulul standard http.server nu are un router încorporat — și nici nu este nevoie de unul în cazurile obișnuite: do_GET se uită la self.path și direcționează cererea.

Un parametru de cale este bucata din URL care reprezintă date: în /users/7, acesta este 7. Împărțirea căii în segmente ți-l oferă: "/users/7".strip("/").split("/") dă ['users', '7']. Framework-urile adaugă deasupra routere bazate pe șabloane, dar în spate fac exact acest lucru.


Rute și valori din cale

Două rute: lista la /users și un singur utilizator la /users/7. Segmentul cu id-ul este parametrul de cale — partea din URL care transportă date.

O rută cu un parametru de cale

Același do_GET trimite /users într-o ramură și /users/7 în alta — o singură împărțire, iar al doilea segment aduce valoarea 7.

Prompt
Scrie un program Python în care do_GET împarte calea URL în segmente pentru a direcționa GET /users către o linie cu lista și GET /users/7 către o linie cu un singur utilizator, care folosește segmentul id ca parametru de cale. Pornește serverul pe un port liber, trimite cereri către ambele căi și afișează răspunsurile.
Ieșire: program Python complet

Parametri de interogare

Partea de după ? conține parametrii de interogare — opțiuni pentru cerere, cum ar fi un text de căutare sau o limită: /search?q=python&limit=2. urlparse îi separă de cale, iar parse_qs îi transformă într-un dicționar de liste — mereu șiruri, iar .get acoperă parametrii lipsă.

Regula de bază: calea spune care resursă, interogarea spune cum — filtre, sortare, paginare.

Citirea șirului de interogare

Handlerul citește q și limit din interogare. A doua cerere omite limit, așa că handlerul folosește o valoare implicită — parametrii lipsă sunt ceva normal, pregătește-te pentru ei.

Prompt
Scrie un program Python cu un handler /search care citește parametrii de interogare q și limit folosind urlparse și parse_qs, cu o limită implicită când aceasta lipsește. Pornește serverul pe un port liber, trimite o cerere o dată cu ambii parametri și o dată doar cu q, afișând răspunsurile.
Ieșire: program Python complet