코드를 더 나은 구조로 리팩토링 해보자
SignupResponseDto를 쓰지 않고 다른 방법으로 구현을 해보자
package com.hyeonjoonpark.board_crud.Controller;
import com.hyeonjoonpark.board_crud.Dto.ResponseDto;
import com.hyeonjoonpark.board_crud.Dto.SignupDto;
import org.springframework.web.bind.annotation.*;
@CrossOrigin(originPatterns = "http://localhost:3000")
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@PostMapping("/signUp")
public ResponseDto<?> signUp(@RequestBody SignupDto requestBody) {
System.out.println(requestBody.toString());
return null;
}
}
AuthController에서 SignupResponseDto를 지우고 Generic 타입을 ? 로 바꿔주자
또한 클래스 이름을 SigninResponseDto로 변경해주자
package com.hyeonjoonpark.board_crud.Controller;
import com.hyeonjoonpark.board_crud.Dto.ResponseDto;
import com.hyeonjoonpark.board_crud.Dto.SignupDto;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@PostMapping("/signUp")
public ResponseDto<?> signUp(@RequestBody SignupDto requestBody) {
System.out.println(requestBody.toString());
return null;
}
}
@CrossOrigin
을 삭제해주자. Main에 있는 @CrossOrigin
또한 마찬가지이다.
우리는 이제 Main에서 CORS를 지정해줄 것이다
package com.hyeonjoonpark.board_crud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@SpringBootApplication
public class BoardCrudApplication {
public static void main(String[] args) {
SpringApplication.run(BoardCrudApplication.class, args);
System.out.println("Hello Spring Project");
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOriginPatterns();
}
};
}
}
이렇게 작성해줘도
정상작동한다
이렇게 Main에 작성하는 이유는
Controller를 만들때 마다 CORS를 작성해줘야하는 번거로움을 없애기 위해서 분리해서 작성하는 것이다.