inblog logo
|
sxias
    REST API

    [REST API] 13. Blog v3 : User

    문정준's avatar
    문정준
    May 09, 2025
    [REST API] 13. Blog v3 : User
    Contents
    REST API 서버는 데이터만 돌려주는 서버1. 회원가입2. 로그인3. 로그아웃
    ❗

    REST API 서버는 데이터만 돌려주는 서버

    • 변경된 값을 항상 다시 돌려줘야 함
    • GET, POST, PUT, DELETE
     

    1. 회원가입

    • UserController
    @PostMapping("/join") public @ResponseBody Resp<?> join(@Valid @RequestBody UserRequest.JoinDTO reqDTO, Errors errors) { UserResponse.DTO respDTO = userService.회원가입(reqDTO); return Resp.ok(respDTO); }
    • UserService
      • 회원가입 시 원래 정보를 DB에 저장하면 안 됨
      • 해시를 이용한 암호화 진행 후 DB에 삽입
      • 해시 값을 비교할 때에는 라이브러리에서 입력값과 저장된 해시값을 비교하는 함수 사용
    // RestAPI 규칙1 : insert 요청시에 그 행을 dto에 담아서 리턴한다 @Transactional public UserResponse.DTO 회원가입(UserRequest.JoinDTO reqDTO) { try { String encPassword = BCrypt.hashpw(reqDTO.getPassword(), BCrypt.gensalt()); reqDTO.setPassword(encPassword); User userPS = userRepository.save(reqDTO.toEntity()); return new UserResponse.DTO(userPS); } catch (Exception e) { throw new ExceptionApi400("잘못된 요청입니다"); } }
     

    결과

    • 회원가입 성공
    notion image
    • H2 Database
    notion image

    2. 로그인

    • UserController
    @PostMapping("/login") public @ResponseBody Resp<?> login(@Valid @RequestBody UserRequest.LoginDTO loginDTO, Errors errors, HttpServletResponse response) { UserResponse.TokenDTO respDTO = userService.로그인(loginDTO); return Resp.ok(respDTO); }
     
    • UserService
    public UserResponse.TokenDTO 로그인(UserRequest.LoginDTO loginDTO) { User userPS = userRepository.findByUsername(loginDTO.getUsername()) .orElseThrow(() -> new ExceptionApi401("유저네임 혹은 비밀번호가 틀렸습니다")); boolean isSame = BCrypt.checkpw(loginDTO.getPassword(), userPS.getPassword()); if (!isSame) throw new ExceptionApi401("유저네임 혹은 비밀번호가 틀렸습니다."); // 토큰 생성 String accessToken = JwtUtil.create(userPS); return UserResponse.TokenDTO.builder().accessToken(accessToken).build(); }
     

    결과

    • 로그인 성공 시
      • accessToken 반환 - 인가 시 사용
    notion image
     
    • 로그인 실패 시
    notion image

    3. 로그아웃

     
     
    Share article
    Contents
    REST API 서버는 데이터만 돌려주는 서버1. 회원가입2. 로그인3. 로그아웃

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog