My Querystring Argument Neurosis

By Deane Barker

I get irrationally stressed out about querystring arguments. Here’s why.

In this post, the author discusses the challenges of managing query string parameters in web development. They reflect on the complexities and anxieties that arise from their use, such as dealing with encoding issues and maintaining clean URLs. The piece explores the balance between functionality and usability, emphasizing the importance of thoughtful parameter management to enhance user experience and avoid unnecessary complications in web applications.

Generated by Azure AI on June 24, 2024

I have a serious web development neurosis: I hate querystring arguments. You know the garbage after the page name in a URL? Like this:

page.php?thisArgument=thisValue&andThisArgument=thisValue

I hate them. I think they’re ugly, unwieldy, and expose too much of your application to the world. This is an utterly irrational thing, I know, because querystring arguments work perfectly well. I just need to get over myself.

But is the querystring argument falling out of fashion? A lot of apps now run all requests through a single page, and they grab and parse the URL themselves. For instance:

/products/hunting_gear/1

This would show page 1 of products in the hunting gear category. There is no “products” or “hunting_gear” folder or file named simply “1.” Instead, this URL is mapped to an actual block of code. You can do this with a RewriteRule pretty easily (you could do it with a PHP auto-prepend file too).

In my PHP apps, I use an AliasMatch rule to route everything to a single page and I have a mapper like this:

/product/[0-9]+/edit = edit_product.php

This uses a regular expression to map a URL pattern to a file. If the first “directory” is “product,” the second is a number of some kind, and the third is “edit,” then send them to the page to edit a product. That page will grab the number out of the URL and use it to load an object.

J2EE does this too, to map URL strings to servlets. I have no doubt that .NET has the same functionality in there somewhere. I think Rails does this too, from what Joe tells me.

Using the AcceptPathInfo directive for Apache, you can do things like this:

index.php/this/is/some/extra/info

But that just looks sloppy to me. I don’t know why. eZ publish does this by default, and it bugs me to no end.

Finally, today I found this, and it’s what prompted me to write this little diatribe:

/messages.cfm/forumid:4/threadid:39092

So they’re using AcceptPathInfo, but each “directory stop” along the way is a key-value pair. I like this. It speaks to the aesthetic in me, or to the neurotic, depending on how you look at it.

This last example perhaps proves that it’s just the syntax I don’t like – all those &'s and ='s floating around are like fingernails on a blackboard to me. This example is key-value just like traditional querystring arguments, so the function is the same, just the syntax is different. The colon-slash syntax just looks cleaner to me.

Am I the only one with this problem? Does anyone else hate querystring arguments as much as me?

This is item #298 in a sequence of 361 items.

You can use your left/right arrow keys to navigate