W3C home > Mailing lists > Public > uri@w3.org > October 2006

Validation of URI template parameters

From: Jacob Kaplan-Moss <jacob@jacobian.org>
Date: Thu, 5 Oct 2006 11:51:35 -0500
Message-Id: <90532A17-14E8-464C-AFA5-15364F7E93B4@jacobian.org>
To: uri@w3.org

Howdy folks --

So are there any plans to add some sort of validation of template  
parameters to this spec?  That is, I would love to be able to specify  
in a URI template that a particular parameter must be an integer, or  
must be less than five characters long, or...

A bit of background: I work on Django (http:// 
www.djangoproject.com/), an open-source web framework.  One of the  
core bits of Django is a resolver that maps the requested path to a  
function (view) responsible for rendering that page.  This resolver  
currently uses regular expressions, so a simple set of URLs for a  
blog might look like::

	urlpatterns = patterns('',
		('^blog/$', 			blog_index)
		('^blog/(?P<entry_id>\d+)/$', 	entry_page)

(i.e. URIs like ``http://example.com/blog/`` and ``http://example.com/ 

This works pretty well for people who understand regexes -- it lets  
me do some really powerful things -- but for the newcomer and the  
common case something like this URI template proposal would be much  
nicer.  So I'd love to be able to use this (proposed) standard for  
URI resolution within Django.

However, having to do all validation within view code instead of  
within the URI template itself is going to get old really quick.  In  
the above example, in my ``entry_page`` view I can be sure that the  
parameter captured from the regex is an integer; in a URI template::


I'd have to check ``entry_id`` in that view and in every other one.

I don't really have anything concrete to propose here, but if some  
form of validation of parameters is a possibility, I'm happy to spend  
some time thinking about ways it could fit into the spec.


Received on Friday, 6 October 2006 02:15:30 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:25:10 UTC