I think this issue rests with Marius. He's done most of the interface between Lift and the servlet containers. Let's see what he has to say.
On Sun, Feb 7, 2010 at 2:47 PM, Erkki Lindpere <[email protected]> wrote: > Ok. The feature is not really that important for me, just something > that would be nice to have. I think some hack could be made with > sendError(int, String) and web.xml config, but that would be worse > than using the deprecated method. > > Erkki L > > On Feb 7, 11:20 pm, Timothy Perrett <[email protected]> wrote: > > I agree Ross... I would be very reluctant to have Lift rely on some > deprecated method in the servlet spec - even if it is in servlet 3.0. > > > > Cheers, Tim > > > > On 7 Feb 2010, at 20:48, Ross Mellgren wrote: > > > > > Yeah you're very correct. It's unfortunate, but I think since it's > deprecated in the container we should probably not add support for it. I > can't believe they deprecated it for the reason they did, but there it is. > > > > > -Ross > > > > > On Feb 7, 2010, at 8:16 AM, Erkki Lindpere wrote: > > > > >> 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 <[email protected]> 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 <[email protected]> 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 [email protected]. > > >>>>>> To unsubscribe from this group, send email to > [email protected]<liftweb%[email protected]> > . > > >>>>>> 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 [email protected]. > > >>>> To unsubscribe from this group, send email to > [email protected]<liftweb%[email protected]> > . > > >>>> 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 [email protected]. > > >> To unsubscribe from this group, send email to > [email protected]<liftweb%[email protected]> > . > > >> 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 [email protected]. > > > To unsubscribe from this group, send email to > [email protected]<liftweb%[email protected]> > . > > > 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 [email protected]. > To unsubscribe from this group, send email to > [email protected]<liftweb%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/liftweb?hl=en. > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
