[Twisted-Python] HTML shoudl not be baked into twisted.web HTTP implementation
valeriy.zamarayev at gmail.com
Wed Dec 9 16:18:56 EST 2009
On Dec 9, 2009, at 19:34, James Y Knight wrote:
> On Dec 9, 2009, at 11:52 AM, Jared Gisin wrote:
>> I’m writing a HTTP server that exposes various resources as an API.
>> Unless I’m missing something, twisted’s HTTP protocol
>> implementation is in twisted.web.http.
>> The problem with this package is that it’s inexplicably wrapped up
>> in HTML. HTML has nothing to do with HTTP as a whole. Sure, HTML is
>> often what HTTP requests return, but there’s no reason why it
>> should nor is there any RFC that says it should. HTTP request can
>> return anything.
>> The software I’m writing is a programmatic interface. One never
>> uses a web browser, so things such as displaying tracebacks
>> (twisted.web.util.formatFailure) in HTML format is completely
>> wrong. When implementing HTTP, why assume the client always wants
>> HTML. It seem completely wrong from these modules and libraries to
>> be so full of HTML output. HTML output should be provided as a
>> separate config or option for twisted.web. In this case, why not
>> just dump the traceback directly to the HTTP entity-body? As a
>> consumer of twisted.web, I should not have to battle with the hard-
>> coded HTML output of this library. If I want the library to dump
>> things in HTML output, I should have an option to tell it to do
>> that (and I should be able to better customize the HTML), but I
>> should not get HTML by default.
> Customizability is great, and certainly error pages should really
> not be hard-coded at all. However, the default of returning HTML
> descriptions of errors is a good default, and should remain thus.
> There's usually two cases of interest:
> 1) A program is responding to the error. In that case, it will use
> the HTTP result code, and not care what the content is at all.
> 2) A human is reading the error message. At least 99% of the time,
> this will be happening through a web browser. They understand HTML.
> I'd expect your program to be in case #1, although I don't know if
> you have some need to parse out the particular tracebacks for some
I want to second Jared's point. In my case, the responses from web
including the body, often end up in log files. HTML looks pretty ugly
Though this is a minor point for me in the otherwise great Twisted
More information about the Twisted-Python