코드를 더 나은 구조로 리팩토링 해보자

SignupResponseDto 삭제 및 리팩토링

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로 변경해주자


CORS 리팩토링

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를 작성해줘야하는 번거로움을 없애기 위해서 분리해서 작성하는 것이다.

profile
Backend Developer

0개의 댓글