[스프링부트] 컨트롤러와 매핑된 핸들러가 없는 오류

조회수 197회

안녕하세요! 스프링을 갓 다뤄보기 시작한 코린이입니다.. 다름이 아니라 404 오류를 며칠째 해결하지 못하고 있어서 질문드립니다.

먼저 백엔드 코드는 다음과 같습니다.

//Login4Controller.java package com.example.WIM;

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;

@RestController @RequestMapping("/api") @CrossOrigin(origins = "http://localhost:3000") // 리액트 개발 서버의 주소 class LoginRequest{ private String id; private String password;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

}

public class Login4Controller { private static final Logger logger = LoggerFactory.getLogger(Login4Controller.class); @PostMapping("/signin") public ResponseEntity login(@RequestBody LoginRequest loginRequest) { logger.debug("Received request for URL: /api/signin"); // 요청 URL을 로깅 String dbId = "123"; String dbPassword = "456";

    if (loginRequest.getId().equals(dbId) && loginRequest.getPassword().equals(dbPassword)) {
        return ResponseEntity.ok("{\"message\": \"login 성공\"}");
    } else {
        return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
                .contentType(org.springframework.http.MediaType.APPLICATION_JSON)
                .body("{\"message\": \"login 실패\"}");
    }
}

}

//WebConfig.java package com.example.WIM;

import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration public class WebConfig implements WebMvcConfigurer {

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
        .allowedOrigins("http://localhost:3000") // 리액트 앱의 도메인을 허용
        .allowedMethods("GET", "POST", "PUT", "DELETE")
        .allowedHeaders("*")
        .allowCredentials(true);
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    // "/favicon.ico" 요청을 무시하도록 설정
    registry.addResourceHandler("/favicon.ico")
            .addResourceLocations("classpath:/static/")
            .resourceChain(false);

    // 정적 리소스 핸들러 추가
    registry.addResourceHandler("/resources/**")
            .addResourceLocations("classpath:/static/");

    // /api 경로 아래의 요청을 컨트롤러로 전달
    registry.addResourceHandler("/api/**")
            .addResourceLocations("classpath:/static/"); // 여기에 컨트롤러를 처리할 빈 경로를 설정
}

}

직접 만든 자바 클래스는 저 위 두개가 전부이고, 모두 메인 클래스인 WIMApplication.java 클래스와 같은 패키지에 들어가있습니다.

프론트엔드(로그인창)에서 아이디 및 비밀번호를 입력해서 값을 백엔드에 전달해야 하는데, 로그를 살펴보니 컨트롤러와 매핑된 핸들러가 없어 값을 전달받지 못하는 상황인 듯 합니다. url도 몇번이나 살펴보았지만 틀린 부분이 없습니다. 어디가 문제인걸까요?

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)