Inflearn brand logo image

인프런 커뮤니티 질문&답변

11 1님의 프로필 이미지
11 1

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

요청 매핑

이 메서드를 호출하려면 URL 주소를 어떻게 써야 하나요?

작성

·

301

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

@GetMapping(value = "/mapping-param", params = {"mode=debug","mode=good"})
public String mappingParam() {
    log.info("mappingParam");

    return "ok";
}

 

http://localhost:8080/mapping-param?mode=debug

 

http://localhost:8080/mapping-param?mode=good

 

http://localhost:8080/mapping-param?mode=debug&mode=good

 

이 URL들로는 Whitelabel Error Page가 뜨는데 어떻게 호출할 수 있나요?

답변 2

1

저렇게는 호출 못할 것 같아요 HTTP 요청은 파라미터 한 개에다가 한 개에 값만 매칭시킬 수 있는데 저 경우에는 한 개의 파라미터에 두 개의 값을 매칭시키는 거니까 저렇게 하면 당연히 안 되고

 

저 두 조건을 만족시키려면 OR 조건으로 나눠서 분리해서 처리하거나 아니면 파라미터명을 mode, status 이렇게 해서 좀 다르게 해서 매칭시키거나 해야 URL에 대해서 옳바르게 동작할 것 같습니다.

1

안녕하세요. 11 1님, 공식 서포터즈 코즈위버입니다.

WhiteLabel Error가 뜬다면 URL로 해당 컨트롤러를 제대로 호출한 것이 맞습니다.

인텔리제이 하단의 콘솔창에 mappingParam 이라는 문구가 떠 있는지 확인해주세요.

 

뷰 파일이 존재하지 않을 경우 WhiteLabel Error가 발생합니다.

return 하는 값을 뷰의 이름으로 변경하여 실행해 주세요.

감사합니다.

11 1님의 프로필 이미지
11 1
질문자

아 질문 내용이 부족했네요. 이 클래스는 @RestController 애노테이션을 적용한 상태입니다.

 

@RestController
public class MappingController {

    private Logger log = LoggerFactory.getLogger(getClass());

   

    /**
     * 파라미터로 추가 매핑
     * params="mode",
     * params="!mode"
     * params="mode=debug"
     * params="mode!=debug"
     * params = {"mode=debug","data=good"}
     */
    @GetMapping(value = "/mapping-param", params = {"mode=debug","mode=good"})
    public String mappingParam() {
        log.info("mappingParam");

        return "ok";
    }

}

params = "mode=debug"일 땐 오류 없이 호출할 수 있는데,

params = {"mode=debug","mode=good"}

이때는 어떻게 호출해야 할지 모르겠습니다.

 

안녕하세요 11 1님!

mode 라는 동일한 이름의 키를 이용하여 생기는 문제 같습니다.

이 때는 파라미터를 콤마등으로 구분하여 전달한 후 백엔드에서 이 값을 분리(split) 하여 처리하는 등의 처리가 필요합니다. 아니면 sim2 님 말처럼 파라미터를 분리하는 방법이 필요합니다.

감사합니다.

11 1님의 프로필 이미지
11 1

작성한 질문수

질문하기