Hi Mike,

It is really good piece of advice. Now I will go with the wild card
extension of url and I will parse myself.

I could not make it as hierarchical structure. Wild card is good
option to me.

Regards,

Krish

On Oct 25, 11:39 pm, Mike Orr <[email protected]> wrote:
> On Sun, Oct 25, 2009 at 7:07 AM, [email protected]
>
>
>
> <[email protected]> wrote:
>
> > We have url format 
> > likehttp://www.example.com/search?fsid=software&fgid=language&fcid=python
>
> > Now we want to change without using query string with ? mark.
>
> > So we come up with the following format.
>
> >http://www.example.com/search/fsid-software/fgid-language/fcid-python
>
> > we have more filters than in the above example specified above.
>
> > search is the name of the controller. Now we need to get the fsid-
> > software, fsid-language and fcid-python into the search controller
> > index method.
>
> > They are not really argument and the order could change.
>
> > 1.http://www.example.com/search/fsid-software/fgid-language/fcid-python
> > 2.http://www.example.com/search/fgid-language/fcid-python/fsid-software
> > 3.http://www.example.com/search/fgid-all/fcid-python/fsid-software
>
> > Other complicated problem is to use of query string for pagination.
> > Pagination arguments to be passed as a query string.
>
> > Can you suggest me,
>
> > 1. How to receive thehttp://www.example.com/search/*into a single
> > function argument with differentiation in the query string. Otherwise
> > 2. How to receive them as a python keywords args or a list
>
> > Either way,  I can handle the query well.
>
> If you want to put moveable variables in the URL, the proper way is
> with URL parameters.
> (http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax)
>
> http://www.example.com/search;fsid=software;fgid=language;fcid=python
>
> However, this part of the URL specification has rarely if ever been
> used.  Routes does not support it natively, so you'd have to pass the
> whole parameter section as a wildcard.
>
> map.connect("search", "/search;{spec:.*}", ...)
>
> This would make the 'spec' variable contain
> "fsid-software/fgid-language/fcid-python".  You would then have to
> parse it in the action.  Maybe:
>
> for component in spec.split("/"):
>     name, value = component.split("=")
>     ...
>
> As to putting moveable parameters in the URL path, it conflicts with
> four principles of URL design:
>
> - There should be exactly one URL to a resource.
> - The components of a URL path should not move.
> - Each component should contain the one on its right.
> - If you need to support legacy URLs after a reorganization, the old
> URLs should redirect to the new ones using "301 Moved Permanently".
>
> So the best thing to do is to choose a single hierarchy and set up a
> route for it:
>
> map.connect("search", "/search/{fsid}/{fgid}/{fcid}", ...)
>
> The variable names are unnecessary in the URL because the positions
> are fixed.  The names are unnecessary to the application, and are
> unreadable by humans anyway (how many people know what fsid means?)
> But if you really want the names, you can do this:
>
> map.connect("search", "/search/fsid-{fsid}/fgid-{fgid}/fcid-{fcid}", ...)
>
> If you want the components to move, you'll have to define routes for
> all nine combinations, or use a wildcard like above.
>
> Any choice is compatible with a 'page' query parameter.  The
> webhepers.paginate module is designed for a query parameter 'page'.
>
> --
> Mike Orr <[email protected]>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to