users@jersey.java.net

[Jersey] Re: RequestURI vs AbsolutePath

From: Ted M. Young [_at_jitterted] <tedyoung_at_gmail.com>
Date: Fri, 7 Feb 2014 16:40:35 -0800

Doesn't seem heavy-handed at all, seems like the appropriate way to go.
Nice!

;ted



On Fri, Feb 7, 2014 at 11:52 AM, Robert DiFalco <robert.difalco_at_gmail.com>wrote:

> This seems heavy handed, would this be the right way to do it?
>
> public class HerokuContainerRequestFilter implements
> ContainerRequestFilter {
> @Override
> public void filter( ContainerRequestContext ctx ) throws IOException {
> List<String> schemes = ctx.getHeaders().get( "x-fowarded-proto" );
> if ( schemes != null && !schemes.isEmpty() ) {
> String scheme = schemes.get( 0 );
> UriBuilder builder = ctx.getUriInfo().getRequestUriBuilder();
> ctx.setRequestUri( builder.scheme( scheme ).build() );
> }
> }
> }
>
>
>
> On Thu, Feb 6, 2014 at 4:19 PM, Robert DiFalco <robert.difalco_at_gmail.com>wrote:
>
>> Great suggestion on the filter. I'm not such a great Networking person
>> and was not familiar with a ContainerRequestFilter. I was pretty impressed
>> with myself that I was even able to figure out that heroku's LB was
>> removing the HTTPS scheme before forwarding to my server and that I could
>> dynamically determine this by grabbing "x-forwarded-proto" from the header.
>> I only have a few methods that generate a 303 response but I would *LOVE*
>> not having to parse out and recreate the URL scheme based on the
>> x-forwarded-proto for even these few cases. Seems messy. It would be just
>> easier to use the uriInfo.getAbsolutePathBuilder() to generate the SEE
>> OTHER location. So it seems like a filter could fix this up nicely in one
>> central place.
>>
>>
>> On Thu, Feb 6, 2014 at 1:09 PM, Ted M. Young [@jitterted] <
>> tedyoung_at_gmail.com> wrote:
>>
>>> I don't think it's bad form, seems reasonable if you need properties
>>> from both UriInfo and HttpHeaders. I wonder about doing that for "each
>>> method", though, perhaps a filter is appropriate here
>>> (e.g., ContainerRequestFilter)?
>>>
>>> ;ted
>>> --
>>> http://about.me/tedmyoung
>>>
>>>
>>> On Thu, Feb 6, 2014 at 12:44 PM, Robert DiFalco <
>>> robert.difalco_at_gmail.com> wrote:
>>>
>>>> Thanks!
>>>>
>>>> While I've got you, I need to get the request URI as well as the
>>>> x-forwarded-proto in a bunch of my REST server methods. Is it considered
>>>> bad form to do a "@Context ContainerRequest request" and should I instead
>>>> just do two context parameters in each method "@Context UriInfo info,
>>>> @Context HttpHeaders headers"?
>>>>
>>>> Any thoughts?
>>>>
>>>>
>>>>
>>>> On Thu, Feb 6, 2014 at 12:21 PM, Ted M. Young [@jitterted] <
>>>> tedyoung_at_gmail.com> wrote:
>>>>
>>>>> The Request URI includes any query parameters or fragments (#)
>>>>> segments. The Absolute Path is the same, but does not include the query
>>>>> parameters and fragments.
>>>>>
>>>>> ;ted
>>>>> --
>>>>> http://about.me/tedmyoung
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Feb 6, 2014 at 12:07 PM, Robert DiFalco <
>>>>> robert.difalco_at_gmail.com> wrote:
>>>>>
>>>>>> I need a little guidance here? I'm not sure I understand the
>>>>>> difference between UriInfo#getAbsolutePathBuilder and
>>>>>> UriInfo#getRequestUriBuilder. When would I use one over the other?
>>>>>>
>>>>>> TIA
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>