[SPRING] 애매한 URL, 하나는 PathVariable
SPRING애매한 URL, 하나는 PathVariable
나는 봄 3.2 웹 애플 리케이션과 나는 다음과 같은 요청 매핑과 컨트롤러가 :
@RequestMapping(value = "/test/{param1}", method = RequestMethod.GET)
public String method1(@PathVariable(value = "param1") String param1, ..
@RequestMapping(value = "/test/login", method = RequestMethod.GET)
public String method2(//..
누군가가 url / test / login을 요청하면 method2가 호출 될 수 있습니까? 봄이 그것을 처리하는 방법을 결정하는 데 어떤 요소가 있습니까? PathVariable없이 URL을 항상 선택합니까? 나는 봄의 문서에서 아무것도 찾을 수 없다.
해결법
-
==============================
1.누군가가 url / test / login을 요청하면 method2가 호출된다는 것을 확신 할 수 있습니까? 예.
누군가가 url / test / login을 요청하면 method2가 호출된다는 것을 확신 할 수 있습니까? 예.
매핑은 특이성에 의해 해결되며 관련 문서는 여기에서 볼 수 있습니다.
두 매핑이 요청과 일치하면 더 구체적인 사항이 적용됩니다. 두 매핑 중 / test / login이 더 구체적입니다.
-
==============================
2.예상되는 대답이 아닌 것 같지만 문서에 명시되지 않았기 때문에 정의되지 않은 것으로 간주해야합니다.
예상되는 대답이 아닌 것 같지만 문서에 명시되지 않았기 때문에 정의되지 않은 것으로 간주해야합니다.
시도해 볼 수는 있지만 (결국 소스 파일 인 경우 "/ test / logging"메서드를 사용하는 것이 좋습니다), 작동하더라도 여전히 다른 버전의 스프링 프레임 워크에서 작동한다는 것을 확신 할 수 없습니다.
내 충고는 다음과 같습니다. 가능한 경우 모호한 URL을 피하십시오. 가능하지 않은 경우 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?
@RequestMapping(value = "/test/{param1}", method = RequestMethod.GET) public String method0(@PathVariable(value = "param1") String param1, ... ) { // union of all parameters for both method1 and method2 String ret; if ("login".equals(param1)) { ret = method2(/* pass parameters for method 2 */ ...); } else { ret = method1(/* params for method1 */ param1, ...); } return ret; } public String method1(String param1, .. public String method2(//..
그렇게하면 어떤 메소드가 URL을 처리 하는지를 완벽하게 제어 할 수 있습니다. 꼭 가장 좋은 방법은 아니지만 최소한 강력합니다 ...
from https://stackoverflow.com/questions/31746208/ambiguous-urls-one-with-pathvariable by cc-by-sa and MIT license