durusmail: quixote-users: allowing an empty body
allowing an empty body
2003-09-03
2003-09-03
2003-09-03
2003-09-03
2003-09-03
allowing an empty body
Neil Schemenauer
2003-09-03
On Wed, Sep 03, 2003 at 04:35:37PM -0400, John Belmonte wrote:
> Hello,
>
> I am designing a web application using Quixote and the REST architecture
> style.  Sometimes I'd like to generate a response that has no body, for
> example:
>
>     HTTP/1.1 201 Created
>     Location: http://example.net/some-resource/555
>
> However, the Quixote framework does not allow HTTP request handlers to
> return None.  From Publisher.try_publish():
>
>     if output is None:
>         raise RuntimeError, 'callable %s returned None' % repr(object)
>
> In light of the fact that it's reasonable to return no body, what is the
> purpose of this exception?  Is it necessary?

It catches some programming errors.

> I know that I can have my handler return an empty string, but this will
> cause the Content-type and Content-length headers to be set due to the
> way HTTPResponse works.

No, returning the empty string will leave 'response.body' equal to None.
However, I have noticed that with Apache and mod_scgi I still get:

    HTTP/1.1 200 OK
    Date: Wed, 03 Sep 2003 20:48:20 GMT
    Server: Apache/1.3.27
    Expires: -1
    Connection: close
    Content-Type: text/plain

I'm pretty sure the Connection and Content-Type headers have been added
by Apache, not by Quixote.  I just tested the Medusa server and I get
this:

    HTTP/1.0 200 OK
    Date: Wed, 03 Sep 2003 20:52:44 GMT
    Status: 200 OK
    Expires: -1
    Server: Medusa/1.9

So, I think returning an empty string is what you want.

  Neil

reply