ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 회원가입 API를 설계&완성해보자!
    프로젝트 2023. 12. 14. 20:15

    오늘은 지난 시간 동안 배웠던 Spring에 대해 복습해보는 시간을 가져보도록 하겠습니다.

    먼저 요구사항부터 살펴보죠!

     

    회원 가입 API 요구사항

    • 닉네임, 비밀번호, 비밀번호 확인을 request에서 전달받기
    • 닉네임은 최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성하기
    • 비밀번호는 최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패로 만들기
    • 비밀번호 확인은 비밀번호와 정확하게 일치하기
    • 데이터베이스에 존재하는 닉네임을 입력한 채 회원가입 버튼을 누른 경우 "중복된 닉네임입니다." 라는 에러메세지를 response에 포함하기
    • 회원 가입 버튼을 누르기 전, 같은 닉네임이 존재하는지 "확인" 버튼을 눌러 먼저 유효성 검증부터 할 수 있도록 해보기

    위의 요구사항을 보고 브레인스토밍을 한번 해봅시다.

     

    DB는 MySQL을 선택해서 User 데이터를 저장하겠습니다.

    Java와 DB를 연결하기위한 MySQL 드라이버와 JPA를 build.gradle에 추가해야겠군요!

    RESTful한 API를 위해 controller, service, repository, entity로 나눠야겠습니다.

    요청과 응답을 위한 dto폴더도 필요하겠습니다.

     

    https://github.com/shin3766/PlusWeekReviewProject

     

    GitHub - shin3766/PlusWeekReviewProject

    Contribute to shin3766/PlusWeekReviewProject development by creating an account on GitHub.

    github.com

     

    완성된 회원가입 API입니다. 

     

    제가 이 기능을 개발하면서 맞닥트린 에러가 몇가지 있습니다.

    해결방법도 같이 알려드리겠습니다.

    1. application.properties 미설정

     

    위의 에러는 application.properties를 설정하지 않았기 때문에 생긴 문제입니다.

    아래 코드를 참고하여 사용자의 설정에 맞게 설정하시길 바랍니다. 

    spring.datasource.url=jdbc:mysql://localhost:3306/[사용자 db이름]
    spring.datasource.username=[사용자 db 유저네임]
    spring.datasource.password=[사용자 db 비밀번호]
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    spring.jpa.hibernate.ddl-auto=update
    
    spring.jpa.properties.hibernate.show_sql=true
    spring.jpa.properties.hibernate.format_sql=true
    spring.jpa.properties.hibernate.use_sql_comments=true

     

    2. Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'text/plain;charset=UTF-8' is not supported]

    위의 에러는 제가 postman에서 post방식으로 json형식 데이터를 보냈을 때 나타난 에러입니다. 에러코드는 415에러였습니다. 이 에러의 해결 방법은 postman의 Header에서 Content-Type을 application/json으로 바꾸면 해결 가능합니다. 

     

    개선점

    1. 닉네임 중복 확인용 dto를 새로 만들었는데 불필요한 dto를 만든게 아닌지 판단이 잘 서지 않습니다.

    2. 보안 관련해서 password를 안전하게 보호해야할 필요가 있습니다.

Designed by Tistory.