<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()));
}