La oss si at jeg har en internettside, fiktivside.com, hvor man kan gjøre oppslag etter bestemte ting basert på for eksempel fylke. Man søker på "Hedmark", og får opp en liste med ting av en bestemt art (murermestere, for eksempel) som er knyttet til Hedmark fylke.
En rimelig tradisjonell måte å løse dette på, er å ha en index.php som viser søkeskjemaet, og la det poste med GET (for mulig direktelinking) til en annen side, for eksempel results.php. I results.php plukker man ut GET-parameteret, søker i databasen og dersom fylket finnes skriver man ut resultatene for det fylket; mens om fylket ikke finnes, skriver man nettopp det og ber brukeren gå tilbake og prøve på nytt.
En litt slickere måte å gjøre dette på, er med routing. Så i stedet for at man ved søk på "Hedmark" kommer til URLen "fiktivside.com/results.php?fylke=Hedmark", så kommer man til "fiktivside.com/Hedmark".
Mitt inntrykk er da at det er best at alle requests går til index.php. Å splitte ut routingen og bruke det som parameter er ikke særlig vanskelig. Men hvordan er det her best å gjøre omdirigeringen?
Dersom man søker på noe som finnes, som "Hedmark", så ønsker man en omdirigering til "fiktivside.com/Hedmark". Men hvilken HTTP status code er best egnet til denne omdirigeringen? PHPs 'header("Location: ...")' bruker 302, men dette er ut fra hva jeg leser ikke helt riktig. 301 er opplagt galt. 303 virker riktigst ut fra den korte beskrivelsen på Wikipedia, men på den mer utfyllende artikkelen virker det ikke riktig likevel. Kanskje dette er bare pirk og uvesentlig, og normal praksis er å bruke 302?
En annen ting er, hvordan bør man gjøre routingen til et feilet søk? Dersom noen manuelt skriver inn "fiktivside.com/Baretullfinnesikke", så bør den omdirigere til en 404. Men om noen søker på fylke i skjemaet med strengen "Baretullfinnesikke", så virker det veldig galt å omdirigere til 404. Om man i stedet router feilede søk til f.eks. "fiktivside.com/Feiletsøk" med søketermen som POST-argument for å gi en fornuftig feilmelding, hva bør skje om man går direkte til "fiktivside.com/Feiletsøk" uten noe POST-argument? Eller om man (søkt, jeg vet) sender en POST-request med et eksisterende fylke til samme side, er det da akseptabelt at den bråkjekt påstår at fylket "Hedmark" ikke eksisterer? Det siste vil jo være et resultat av tukling utenfra, og kan kanskje aksepteres, men det virker ikke super-clean.
Finnes det noe akseptert best practice for tilfeller som dette? Er det eventuelt noen som har noen gode ideer på hvordan dette best løses?
En rimelig tradisjonell måte å løse dette på, er å ha en index.php som viser søkeskjemaet, og la det poste med GET (for mulig direktelinking) til en annen side, for eksempel results.php. I results.php plukker man ut GET-parameteret, søker i databasen og dersom fylket finnes skriver man ut resultatene for det fylket; mens om fylket ikke finnes, skriver man nettopp det og ber brukeren gå tilbake og prøve på nytt.
En litt slickere måte å gjøre dette på, er med routing. Så i stedet for at man ved søk på "Hedmark" kommer til URLen "fiktivside.com/results.php?fylke=Hedmark", så kommer man til "fiktivside.com/Hedmark".
Mitt inntrykk er da at det er best at alle requests går til index.php. Å splitte ut routingen og bruke det som parameter er ikke særlig vanskelig. Men hvordan er det her best å gjøre omdirigeringen?
Dersom man søker på noe som finnes, som "Hedmark", så ønsker man en omdirigering til "fiktivside.com/Hedmark". Men hvilken HTTP status code er best egnet til denne omdirigeringen? PHPs 'header("Location: ...")' bruker 302, men dette er ut fra hva jeg leser ikke helt riktig. 301 er opplagt galt. 303 virker riktigst ut fra den korte beskrivelsen på Wikipedia, men på den mer utfyllende artikkelen virker det ikke riktig likevel. Kanskje dette er bare pirk og uvesentlig, og normal praksis er å bruke 302?
En annen ting er, hvordan bør man gjøre routingen til et feilet søk? Dersom noen manuelt skriver inn "fiktivside.com/Baretullfinnesikke", så bør den omdirigere til en 404. Men om noen søker på fylke i skjemaet med strengen "Baretullfinnesikke", så virker det veldig galt å omdirigere til 404. Om man i stedet router feilede søk til f.eks. "fiktivside.com/Feiletsøk" med søketermen som POST-argument for å gi en fornuftig feilmelding, hva bør skje om man går direkte til "fiktivside.com/Feiletsøk" uten noe POST-argument? Eller om man (søkt, jeg vet) sender en POST-request med et eksisterende fylke til samme side, er det da akseptabelt at den bråkjekt påstår at fylket "Hedmark" ikke eksisterer? Det siste vil jo være et resultat av tukling utenfra, og kan kanskje aksepteres, men det virker ikke super-clean.
Finnes det noe akseptert best practice for tilfeller som dette? Er det eventuelt noen som har noen gode ideer på hvordan dette best løses?
Sist endret av Provo; 19. april 2018 kl. 14:14.