2016-06-08 9 views
12

Ich versuche, die Anfrage URL in einem RestController zu bekommen. Der RestController hat mehrere Methoden, die mit @RequestMapping für verschiedene URIs kommentiert wurden und ich frage mich, wie ich die absolute URL von den @RequestMapping Anmerkungen erhalten kann.Wie bekomme ich die Anfrage-URL in Spring Boot RestController

@RestController 
@RequestMapping(value = "/my/absolute/url/{urlid}/tests" 
public class Test { 
    @ResponseBody 
    @RequestMapping(value "/",produces = "application/json") 
    public String getURLValue(){ 
     //get URL value here which should be in this case, for instance if urlid  
     //is 1 in request then "/my/absolute/url/1/tests" 
     String test = getURL ? 
     return test; 
    } 
} 

Antwort

22

Sie können versuchen, ein zusätzliches Argument vom Typ HttpServletRequest zur getUrlValue() Methode hinzu:

@RequestMapping(value ="/",produces = "application/json") 
public String getURLValue(HttpServletRequest request){ 
    String test = request.getRequestURI(); 
    return test; 
} 
+0

Danke für Ihre Antwort und Beispiel. Ich kenne diese Methode, aber ich frage mich, ob es eine Möglichkeit gibt, URL-Informationen mit irgendwelchen Eigenschaften auf Controller-Ebene zu bekommen, aber es scheint, als ob dies der richtige Weg ist. – NRA

+0

Woher wird HttpServletRequest importiert? –

+0

javax.servlet.http.HttpServletRequest – Deepak

2

Ermöglichen eine beliebige URL immer auf dem System, nicht nur einen aktuellen.

import org.springframework.hateoas.mvc.ControllerLinkBuilder 
... 
ControllerLinkBuilder linkBuilder = ControllerLinkBuilder.linkTo(methodOn(YourController.class).getSomeEntityMethod(parameterId, parameterTwoId)) 

URI methodUri = linkBuilder.Uri() 
String methodUrl = methodUri.getPath() 
-1
@RestController 
@RequestMapping(value = "/my/absolute/url/{urlid}/tests") 
public class AndroidAppController { 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String getURLValue(@PathVariable("urlid") String urlid) { 
     String getURL = urlid; 
     return getURL; 
    } 

}