nhnacademy-aiot1-5 / study

공부한 내용을 기록하는 저장소입니다.
MIT License
0 stars 0 forks source link

405 에러 #32

Open caboooom opened 3 months ago

caboooom commented 3 months ago

문제

프론트 서버 컨트롤러에서 GET /login 요청에 대해서는 뷰만 바로 반환해주기 때문에,

@GetMapping
    public String login(){
        return "authentication/login";
    }

위처럼 컨트롤러에 핸들러 메서드를 추가하지 않고

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/login").setViewName("authentication/login"); <---

    }
}

위와 같이 WebConfig 파일에 ViewController만 추가해주었습니다.

그러나 서버를 켜고 /login 으로 접속하려고 하면 405 응답이 돌아왔습니다.

Image


해결과정

컨트롤러에 GET /login 요청에 대한 핸들러 메서드를 만들어주니 제대로 동작했습니다.

그러나 ViewController에 해당 요청에 대한 뷰네임을 추가해줬기 때문에 핸들러 메서드를 따로 만들지 않아도 돌아가야 맞다고 생각했습니다!!

혹시 스프링부트 어떠한 설정 때문에 그런가 싶어서 WebConfig 파일을 아래처럼 수정하고

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/hi").setViewName("authentication/login"); <---

    }
}

실행시키니 정상작동했습니다.

Image

또는 POST /login 핸들러 메서드를 삭제했을 경우 정상 작동 했습니다,,

문제 원인이나 해결법 아시는 분들 도와주세욥