I have a RESTful web application that supports multiple sort fields on a collection of items. Is there a common convention for encoding these sort fields into the query string of a URL? I'm considering a pattern like the following:
http://myapp.com/books?sort=author:asc,datepublished:desc&count=12
This would sort the collection of books by author and then by date published.
Basically, I need a convenient way for the name-value pairs in my query string to have name-value pairs of their own. I'll need to do something similar to the above example for filter parameters, too.
Does Rails or ASP.NET MVC have a pattern for this? Are there other frameworks that have established ways for dealing with this issue? I'd rather use a familiar format than roll my own.
I'd also prefer a format that uses as little URL percent-encoding as possible.
What about a fully PHP compliant version like this one:
A bit longer but much convinient and as I've said, compliant with PHP. ASP.NET might have implemented support for this format also.
This will create an array, sort, directly where each element of sort has a name and dir property.
For REST, I prefer a more intuitive syntax:
http://myapp.com/books?sort=+author,-datepublished&count=12
And more elaborated (without '+' sign):
http://myapp.com/books?sort=author,-datepublished&count=12
Easy to remember...
I've done this before using the standard SQL sorting syntax. There are numerous parsing functions and techniques out there.
which would be encoded to
I would avoid using GET like parameters. What about this:
The idea is that if you need to refine the search for a resource based on a criterion, you add the name of it on the URL, followed by the parameter value. If you need more than one parameter values, separate them with a +.
This is what StackOverflow uses for tagged questions:
I admit however that adding the count/12 at the end looks a bit strange, but I can't think of anything better.