복붙노트

[SPRING] 봄 MVC @ RetController 및 리디렉션

SPRING

봄 MVC @ RetController 및 리디렉션

Spring MVC @RestController로 구현 된 REST 엔드 포인트가있다. 언젠가는 내 컨트롤러의 입력 매개 변수에 의존합니다. 클라이언트에서 http 리디렉션을 보내야합니다.

Spring MVC @RestController로 가능합니까? 그렇다면 예제를 보여 주시겠습니까?

해결법

  1. ==============================

    1.Handler 메소드에 HttpServletResponse 매개 변수를 추가 한 다음 response.sendRedirect ( "some-url");을 호출하십시오.

    Handler 메소드에 HttpServletResponse 매개 변수를 추가 한 다음 response.sendRedirect ( "some-url");을 호출하십시오.

    같은 것 :

    @RestController
    public class FooController {
    
      @RequestMapping("/foo")
      void handleFoo(HttpServletResponse response) throws IOException {
        response.sendRedirect("some-url");
      }
    
    }
    
  2. ==============================

    2.HttpServletRequest 또는 HttpServletResponse에 대한 직접적인 종속성을 피하기 위해 다음과 같이 ResponseEntity를 리턴하는 "pure Spring"구현을 제안합니다.

    HttpServletRequest 또는 HttpServletResponse에 대한 직접적인 종속성을 피하기 위해 다음과 같이 ResponseEntity를 리턴하는 "pure Spring"구현을 제안합니다.

    HttpHeaders headers = new HttpHeaders();
    headers.setLocation(URI.create(newUrl));
    return new ResponseEntity<>(headers, HttpStatus.MOVED_PERMANENTLY);
    

    메서드가 항상 리디렉션을 반환하면 ResponseEntity 를 사용하고 그렇지 않으면 일반적으로 제네릭 형식으로 반환됩니다.

  3. ==============================

    3.@RestController가 String을 반환하면 다음과 같은 것을 사용할 수 있습니다.

    @RestController가 String을 반환하면 다음과 같은 것을 사용할 수 있습니다.

    return "redirect:/other/controller/";
    

    이 종류의 리디렉션은 GET 요청에만 사용됩니다. 다른 유형의 요청을 사용하려면 HttpServletResponse

  4. from https://stackoverflow.com/questions/29085295/spring-mvc-restcontroller-and-redirect by cc-by-sa and MIT license