Treci la conținutul principal

Câte un handler pentru fiecare rută

Rutarea decide care handler răspunde la care cerere. Routerul inclus în Go este http.ServeMux: tu înregistrezi tipare, iar el distribuie cererile.

Tiparele pot include metoda și parametrii de cale între acolade: "GET /users/{id}" se potrivește cu GET /users/7 și îți dă valoarea 7 prin r.PathValue("id"). Framework-urile adaugă facilități peste acest mecanism, dar el acoperă nevoile de zi cu zi chiar din start.


Rute și valori de cale

Două rute: lista la /users și un singur utilizator la /users/{id}. Partea dintre acolade este parametrul de cale — bucata din URL care reprezintă date.

O rută cu un parametru de cale

Același mux trimite /users către un handler și /users/7 către altul, iar r.PathValue("id") extrage valoarea 7 fără nicio tăiere de șiruri de caractere.

Prompt
Scrie un program Go cu un http.ServeMux care are două rute: GET /users care returnează o linie cu lista și GET /users/{id} care folosește r.PathValue pentru a răspunde despre un singur utilizator. Servește-l cu httptest, cere ambele rute și afișează răspunsurile.
Ieșire: program Go și rezultatul capturat

Parametri de interogare

Partea de după ? conține parametrii de interogare — opțiuni pentru cerere, cum ar fi un text de căutat sau o limită: /search?q=go&limit=2. Ei vin din r.URL.Query(), întotdeauna ca șiruri de caractere, iar Get returnează "" pentru cei care lipsesc.

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 care lipsesc sunt ceva normal, așa că pregătește-te pentru ei.

Prompt
Scrie un program Go cu un handler /search care citește parametrii de interogare q și limit cu r.URL.Query, folosind o limită implicită atunci când aceasta lipsește. Servește cu httptest, cere-l o dată cu ambii parametri și o dată doar cu q, afișând răspunsurile.
Ieșire: program Go și rezultatul capturat