Actually, the reason phrase is not a normal HTTP header, but part of
the status line:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Examples:
HTTP/1.1 200 OK
HTTP/1.1 404 The user with id 8 does not exist

The only way of setting this in Java Servlets as far as I know is
through HttpServletResponse.setStatus(int, String), which
unfortunately is deprecated. A non-deprecated possibility is
sendError(int, String), but that goes to the container's default error
page (or the one defined in web.xml, I think) so it's not exactly what
I would like.

Also, I checked that FireBug actually does display the custom reason
phrase, but Chrome displays the standard one instead.

Erkki L

On Feb 7, 1:08 pm, Timothy Perrett <timo...@getintheloop.eu> wrote:
> If you want to alter the Reason-Phrase, you can already do that - objects 
> like NotFoundResponse are just helpers on InMemoryResponse... nothing 
> stopping you adding your own helpers that set headers with customised reason 
> codes; this should give you what you what. I haven't managed to find an RFC 
> that lists reason-phrase as anything but a particular header in the HTTP 
> response.
>
> Moreover, its not the wrong thing to return a plain text response if the 
> request mime was text/plain... indeed, it would be even less helpful if it 
> returned JSON or such. IMHO, the response type should match what was asked 
> for by the caller - i.e. its an implementation issue not a framework level 
> issue.
>
> Tim
>
> On 6 Feb 2010, at 21:55, Erkki Lindpere wrote:
>
> > The NotFoundResponse (and others) puts the custom message into the
> > request body. That works as well, but to be really lean (mainly for
> > bragging rights :)) I'd like to remove any unnecessary elements from
> > the rest api. Most of the error messages are going to be simple one-
> > line messages (and short sentences). For some errors I might provide a
> > detailed response and it could go into the body, as XML/JSON/...
> > That's inconsistent if the other errors have a plain text message in
> > the body.
> > So I could either go with structured details for all messages or in
> > simple cases use the HTTP headers or status line. A custom header
> > would work, but the status line is standard and also more easily
> > accessed with some client libraries.
>
> > And last but perhaps not least, for debugging purposes, the HTTP
> > Reason Code should show up better in web developer tools (for example
> > FireBug, Chrome's tools). My web UI also goes through the REST API so
> > it would be nice to read error messages right in the listing in
> > firebug's net panel.
>
> > So I'm suggesting that perhaps Lift would like to provide only the
> > possibility of changing that value in user code. But I completely
> > understand if it doesn't. Currently it doesn't seem to be supported in
> > Lift's http.provider package and even in javax.servlet the
> > setStatus(int, String) method is deprecated (I'm not sure if
> > sendError(int, String) uses the reason phrase).
>
> > Erkki L
>
> > On Feb 6, 9:59 pm, Ross Mellgren <dri...@gmail.com> wrote:
> >> I think it would be fine to have different text there, probably better 
> >> than having the standard text if you have refined detail. I don't think 
> >> it'd be a good idea to conditionalize on the response text in client code 
> >> - that's always fragile. If you want to give additional machine-readable 
> >> detail, I'd put it in a response header or in the body as a JSON or XML 
> >> field or what have you.
>
> >> You can specify custom text there, but you may have to sidestep the usual 
> >> response classes, depending on which one. The one you gave, not found, can 
> >> have the message customized though, just do new NotFoundResponse("the 
> >> message").
>
> >> -Ross
>
> >> On Feb 6, 2010, at 2:52 PM, Erkki Lindpere wrote:
>
> >>> It seems Lift does not support custom HTTP Reason Phrases in
> >>> responses. I would like to send error messages in the Reason Phrase
> >>> (along with a vaguely applicable HTTP status code) in a RESTful API
> >>> I'm providing. My understanding of the HTTP spec is that the reason
> >>> phrase is meant to be human readable and does not have to contain the
> >>> recommended messages (i.e. "Not Found").
>
> >>> But maybe it would not be wise to do this? I'm not actually aware of
> >>> any API-s that send error messages in the Reason Phrase.
>
> >>> --
> >>> You received this message because you are subscribed to the Google Groups 
> >>> "Lift" group.
> >>> To post to this group, send email to lift...@googlegroups.com.
> >>> To unsubscribe from this group, send email to 
> >>> liftweb+unsubscr...@googlegroups.com.
> >>> For more options, visit this group 
> >>> athttp://groups.google.com/group/liftweb?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Lift" group.
> > To post to this group, send email to lift...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > liftweb+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/liftweb?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

Reply via email to