[SPRING] Spring Boot RestController에서 요청 URL을 얻는 방법
SPRINGSpring Boot RestController에서 요청 URL을 얻는 방법
RestController에서 요청 URL을 가져 오려고합니다. RestController에는 여러 URI에 대해 @RequestMapping으로 주석 처리 된 여러 메소드가 있으며 @RequestMapping 주석에서 절대 URL을 가져 오는 방법이 궁금합니다.
@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;
}
}
해결법
-
==============================
1.getUrlValue () 메서드에 HttpServletRequest 유형의 추가 인수를 추가해보십시오.
getUrlValue () 메서드에 HttpServletRequest 유형의 추가 인수를 추가해보십시오.
@RequestMapping(value ="/",produces = "application/json") public String getURLValue(HttpServletRequest request){ String test = request.getRequestURI(); return test; }
-
==============================
2.Spring의 HATEOAS 또는 javax. * 네임 스페이스에 의존하지 않으려면 ServletUriComponentsBuilder를 사용하여 현재 요청의 URI를 얻습니다.
Spring의 HATEOAS 또는 javax. * 네임 스페이스에 의존하지 않으려면 ServletUriComponentsBuilder를 사용하여 현재 요청의 URI를 얻습니다.
import org.springframework.web.util.UriComponentsBuilder; ServletUriComponentsBuilder.fromCurrentRequest(); ServletUriComponentsBuilder.fromCurrentRequestUri();
-
==============================
3.현재 URL뿐만 아니라 시스템에서 URL을 가져올 수 있습니다.
현재 URL뿐만 아니라 시스템에서 URL을 가져올 수 있습니다.
import org.springframework.hateoas.mvc.ControllerLinkBuilder ... ControllerLinkBuilder linkBuilder = ControllerLinkBuilder.linkTo(methodOn(YourController.class).getSomeEntityMethod(parameterId, parameterTwoId)) URI methodUri = linkBuilder.Uri() String methodUrl = methodUri.getPath()
-
==============================
4.UriComponentsBuilder 형식의 매개 변수를 컨트롤러 메서드에 추가하십시오. Spring은 현재 요청에 대한 URI로 미리 구성된 인스턴스를 제공하고 사용자 정의 할 수 있습니다 (예 : MvcUriComponentsBuilder.relativeTo를 사용하여 동일한 접두어를 사용하는 다른 컨트롤러를 가리킴).
UriComponentsBuilder 형식의 매개 변수를 컨트롤러 메서드에 추가하십시오. Spring은 현재 요청에 대한 URI로 미리 구성된 인스턴스를 제공하고 사용자 정의 할 수 있습니다 (예 : MvcUriComponentsBuilder.relativeTo를 사용하여 동일한 접두어를 사용하는 다른 컨트롤러를 가리킴).
-
==============================
5.
@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; } }
from https://stackoverflow.com/questions/37710557/how-to-get-request-url-in-spring-boot-restcontroller by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] gradle 작업을 통해 spring 프로필로 bootRun을 실행하는 방법 (0) | 2019.03.18 |
---|---|
[SPRING] 프로토 타입 빈은 예상대로 자동 실행되지 않습니다. (0) | 2019.03.18 |
[SPRING] Spring 3.2와 Cache Abstraction에서 EhCache 구현이 누락되었습니다. (0) | 2019.03.18 |
[SPRING] 외부화 된 값을 Spring annotation으로 주입 (0) | 2019.03.18 |
[SPRING] Maven : Spring 4 + Spring 보안 (0) | 2019.03.18 |