<aside> ☝🏻 API 랑 다를게없어서 패키지명을 api 파일명을 Api로 함

</aside>

UserApi.java 만들기


import static com.example.study.user.api.dto.UserRegisterDto.*;

// Controller라고 ioc 컨테이너가 쓸수있게 Bean객체 등록
@RestController
// Lombok 껀데 final 필드나 @NonNull 붙은 필드를 인자로 받게 생성자 만들어줌
// java에서는 필드에 추가할때마다 초기화 해야하니까 생성자 언제만듬 그냥이거 쓰셈
@RequiredArgsConstructor
public class UserApi {

	// private UserService userService new UserService(); 
	// 위에 이거 쓰는 흑우없제 RequiredArgsConstructor이거 쓰세요
	// 대신 쓸때 꼭 final <<<<<< 붙여줘야함
	private final UserService userService; //이거 인터페이스 만든거임 다형성
	
	// 요청보낼 주소적어주고
	@PostMapping("/signup")
	// 우리가 dto만들었으니 dto에서 반환타입 정해주면됨 지금은 boolean
	// 위에 import 넣어준거 보면 원래 UserRegisterDto.UserSignUpResponseDto 이건데
	// static 붙여주고 위에처럼 쓰면 줄여쓸수있음
	public UserSignUpResponseDto signUp(
													//요기보면 안줄여써서 길어지쥬?
			@RequestBody @Valid UserRegisterDto.UserSignUpRequestDto body,
			// 나중에 ip 해서 작업할거
			HttpServletRequest request
			)
	{
		// 친절한 기훈씨가 나중에 알아올거임
		String ip = request.getHeader("X-Forwarded-For");
		if (ip == null) ip = request.getRemoteAddr();
		
		return new UserSignUpResponseDto( userService.signUp(body) );
	}
	

	// 로그인도 비슷하게 하면됨 dto 만들어서
	@PostMapping("/login")
	public UserLoginResponseDto login(
			@RequestBody UserLoginRequestDto body,
			HttpServletRequest request
	)
	{
		String ip = request.getHeader("X-Forwarded-For");
		if (ip == null) ip = request.getRemoteAddr();
		
		return new UserLoginResponseDto(userService.login(body.email(), body.rawPassword()));
	}