[Web-SIG] [server-side] request/response objects

Ian Bicking ianb at colorstudy.com
Thu Oct 30 12:37:27 EST 2003


On Thursday, October 30, 2003, at 11:02 AM, Randy Pearson wrote:
>> ... the big
>> difference between the two is that request should be read only while
>> response can have its state altered....
>
> If request is read-only, how would you create unit tests for other
> components? A testing harness would need the ability to instantiate and
> alter pseudo requests outside of the HTTP server context.

You'd be able to create artificial requests, and copy requests with 
changes.  Immutable objects usually have to have better support for 
these sorts of things for just this reason.  So maybe you'd have 
something like:

     # Ignoring some details here...
     vars = request.vars
     vars.update({'action': 'delete'})
     forward(request.clone(path='/target/delete', variables = vars))

Or:

     req = HTTPRequest(variables={}, method='GET', ...)

While perhaps with CGI you'd use:

    req = HTTPRequest.fromEnvironment()

(.fromCGI()? just .cgi()?)

Anyway, I think there's compatibility problems with this, but if I was 
doing it from scratch I might do this.  (Immutability would be a little 
soft, though -- you could, for instance, set the response for the 
request after the object was created, but you could change the response 
one it had been set)


--
Ian Bicking | ianb at colorstudy.com | http://blog.ianbicking.org




More information about the Web-SIG mailing list