복붙노트

[SPRING] Spring Boot RestController에서 요청 URL을 얻는 방법

SPRING

Spring 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. ==============================

    1.getUrlValue () 메서드에 HttpServletRequest 유형의 추가 인수를 추가해보십시오.

    getUrlValue () 메서드에 HttpServletRequest 유형의 추가 인수를 추가해보십시오.

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

    2.Spring의 HATEOAS 또는 javax. * 네임 스페이스에 의존하지 않으려면 ServletUriComponentsBuilder를 사용하여 현재 요청의 URI를 얻습니다.

    Spring의 HATEOAS 또는 javax. * 네임 스페이스에 의존하지 않으려면 ServletUriComponentsBuilder를 사용하여 현재 요청의 URI를 얻습니다.

    import org.springframework.web.util.UriComponentsBuilder;
    
    ServletUriComponentsBuilder.fromCurrentRequest();
    ServletUriComponentsBuilder.fromCurrentRequestUri();
    
  3. ==============================

    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. ==============================

    4.UriComponentsBuilder 형식의 매개 변수를 컨트롤러 메서드에 추가하십시오. Spring은 현재 요청에 대한 URI로 미리 구성된 인스턴스를 제공하고 사용자 정의 할 수 있습니다 (예 : MvcUriComponentsBuilder.relativeTo를 사용하여 동일한 접두어를 사용하는 다른 컨트롤러를 가리킴).

    UriComponentsBuilder 형식의 매개 변수를 컨트롤러 메서드에 추가하십시오. Spring은 현재 요청에 대한 URI로 미리 구성된 인스턴스를 제공하고 사용자 정의 할 수 있습니다 (예 : MvcUriComponentsBuilder.relativeTo를 사용하여 동일한 접두어를 사용하는 다른 컨트롤러를 가리킴).

  5. ==============================

    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;
        }
    
    }
    
  6. from https://stackoverflow.com/questions/37710557/how-to-get-request-url-in-spring-boot-restcontroller by cc-by-sa and MIT license