Unlike constructing or building a URI in a console or client app, it could be redundent setting root elements if you are working in a servlet environment. Luckly in Spring there is ServletUriComponentsBuilder sub-class that provides static factory methods to copy available URL information from a Servlet requests.
Append path @Test
public void create_URI_from_http_request () {
MockHttpServletRequest request = new MockHttpServletRequest ();
UriComponents ucb =
ServletUriComponentsBuilder
. fromContextPath ( request )
. path ( "/examples/java" )
. build ();
URI uri = ucb . toUri ();
assertEquals ( "http://localhost/examples/java" , uri . toString ());
}
Replace query parameter @Test
public void replace_query_parameter () {
MockHttpServletRequest request = new MockHttpServletRequest ();
request . setQueryString ( "primaryKey=987" );
UriComponents ucb =
ServletUriComponentsBuilder
. fromRequest ( request )
. replaceQueryParam ( "primaryKey" , "{id}" )
. build ()
. expand ( "123" )
. encode ();
assertEquals ( "http://localhost?primaryKey=123" , ucb . toString ());
}
Replace path @Test
public void replace_path () {
MockHttpServletRequest request = new MockHttpServletRequest ();
request . setPathInfo ( "/java/examples" );
UriComponents ucb =
ServletUriComponentsBuilder
. fromRequest ( request )
. replacePath ( "/java/exercises" )
. build ()
. encode ();
URI uri = ucb . toUri ();
assertEquals ( "http://localhost/java/exercises" , uri . toString ());
}
Construct or build URI from request posted by Justin Musgrove on 26 November 2013
Tagged: java and java-net
Share on: Facebook Google+
All the code on this page is available on github:
BuildURIFromHttpRequest.java