스프링 숙련 개인과제
스프링 입문 과제로 블로그 서버 만든 거에서 발전시키는 과제였다.
요구사항 변경
- 회원 가입 API
- username, password를 Client에서 전달받고 정규표현식 설정
- DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기
- 로그인 API
- username, password를 Client에서 전달받고 로그인 성공 시, 로그인에 성공한 유저의 정보와 JWT를 활용하여 토큰을 발급하고, 발급한 토큰을 Header에 추가하고 성공했다는 메시지, 상태코드와 함께 Client에 반환
- 선택한 게시글 수정 API
- 비밀번호로 사용자 일치 여부 확인하던 로직을 토큰 인증으로 변경
- 선택한 게시글 삭제 API
- 비밀번호로 사용자 일치 여부 확인하던 로직을 토큰 인증으로 변경
진행
- API명세 수정
- 테이블 ERD 설계
- User 클래스 추가, Blog 객체 수정
- JWT 구현
- 회원가입 기능 구현
- 로그인 기능 구현
- 게시글 작성 기능 수정 - 토큰 인증
- 게시글 수정 기능 수정 - 토큰 인증
- 게시글 삭제 기능 수정 - 토큰 인증
- 회원가입 시 정규표현식 추가
추가 공부할 것
- 위에 추후 정리할 내용 정리
- Exceptionhandler 사용해서 예외처리 하기
- 튜터님 코드리뷰 해주신 특강 보면서 코드 수정하기
- Client와 주고 받는 데이터 타입 공부
후발대 과제
- 랜덤으로 정수 10개 저장, 최소값을 찾아주세요!
public class FindMinNumber() {
public static void main(String[] args) {
Random random = new Random();
int[] numbers = new int[10];
for (int i = 0; i < 10; i++){
numbers[i] = random.nextInt(100)+1;
}
System.out.println(Arrays.toString(numbers));
int min = numbers[0];
for (int num : numbers) {
if (num < min) {
min = num;
}
}
System.out.println(min);
}
}
- 처음에
int min = 0;
이렇게 짰는데 결과가 계속 0이 나왔다.
- 랜덤으로 숫자가 생성되니까 뭘 하든 0보다 크게 나올 수 밖에... 이 생각을 못했다. 코드를 돌려보고 나서야 깨달음.
- 특정 숫자로 지정하지 않고 배열의 첫 인덱스 숫자로 지정하면 된다.
nextInt()
- 처음에 괄호 안에 아무것도 설정을 안하고 랜덤을 돌리니.. 숫자가 어마무시 하게 나왔다.
[-14183575, -1448159115, -1906217649, 395503441, 1734636734, -455261681, -2006129680, 273178387, -1501715107, -222186214]
- int형이라서 유효범위가 −231(-2,147,483,648) ~ 231−1(2,147,483,647) 이기 때문
- 그래서 범위를 설정해줬다. 1부터 범위가 들어가기 위해 +1을 해줌