2016-06-08 28 views
12

İstek URL'sini RestController'da almaya çalışıyorum. RestController, farklı URI'ler için @RequestMapping ile açıklanmış birden çok yönteme sahiptir ve ben mutlak URL'yi @RequestMapping ek açıklamalarından nasıl alabileceğimi merak ediyorum.Spring Boot RestController'da istek URL'si nasıl alınır

@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; 
    } 
} 

cevap

22

Sen getUrlValue() yöntemine tip HttpServletRequest ek bir argüman ekleyerek deneyebilirsiniz:

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

teşekkürler. Bu yöntemi biliyorum ama denetleyici düzeyinde herhangi bir özellik kullanarak url bilgisi almak için bir yol olup olmadığını merak ediyordum ama bu doğru yol gibi görünüyor. – NRA

+0

HttpServletRequest nereden geliyor? –

+0

javax.servlet.http.HttpServletRequest – Deepak

2

sisteminizde, sadece bir akım birinde herhangi bir URL alma izni verir. Yanıtın ve örneğin

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; 
    } 

}