이번 주차에서 전심전력으로 쏟아부었어야 했는데, 일정이 이리저리 겹쳐서 제대로 하지 못한게 참으로 후회스럽네요.
잭슨님이 Spring Security 정리본을 주셔서, 읽어보면서 SSL 인증서나 암호화 등등 여러가지 알게 되었고,
Spring Security 아키텍쳐 포함해서 많을 것을 익힐수 있는 시간이었습니다.
사실 Spring Security에서 Voter 같은걸 어디에 쓰지? 라는 생각을 가지고 있었는데,
페이스북에서 친구들만 글을 볼 수 있다던지 등에서 쓰이는구나! 라는것과 사용법도 배울 수 있었습니다.
그리고 정규식도 차츰차츰 잊혀지고 있었는데, 이번에 다시 보면서 해볼 수 있었고,
유효성 체크의 중요성도 다시 되새길수 있는 시간이었습니다.
아래의 꿀팁들도 좋았습니다!
정규식 마지막에는 끝을 의미하는 $
를 넣어야 됩니다!
heath_check 관련
😎 이메일 전달을 위해 Map를 사용 → DTO와 Map 각각 장단점이 있다!
아래의 구문을 한줄로 변경해봅시다!
// UserRestController.java
Email email = new Email(request.get("email"));
boolean isExists = userService.findByEmail(email).isPresent();
추가된 name의 매개변수 위치!
User : name 인자에 대한 validation이 빠졌네요. null-check, 최소최대 길이 확인이 필요!!
name 입력에 대한 validation 부분은 User 생성자에서 구현하면 좋을 듯!
정규식
변경 전
...
String regex = "^/api/user/([0-9]+).*";
변경 후 → 고정 변수는 final 처리, 정규식 마지막에 $ 추가
final String regex = "^/api/user/(\\d+)/post/.*$";
heath_check 관련
변경 전
public class UserRestController {
...
@GetMapping("/_hcheck")
public String status() {
return String.format("It's Working in Social Service\n - TimeStamp : %s\n - Unix TimeStamp : %s"
, LocalDateTime.now(), Timestamp.valueOf(LocalDateTime.now()).getTime());
}
}
변경 후 → Controller
로 분리
public class HealthCheckRestController {
@GetMapping("/_hcheck")
public ApiResult<Long> healthCheck() {
return OK(System.currentTimeMillis());
}
}
User - name 관련
변경 전
public class User {
private String name;
}
변경 후 → 생성자에 체크 추가!
public class User {
private String name;
public User(String name, ...) {
checkArgument(isNotEmpty(name), "name must be provided.");
checkArgument(
name.length() >= 1 && name.length() <= 10,
"name length must be between 1 and 10 characters."
);
this.name = name;
}
}
아래의 구문을 한줄로 변경해봅시다!
변경 전
Email email = new Email(request.get("email"));
boolean isExists = userService.findByEmail(email).isPresent();
return OK(isExists);
변경 후
Email email = new Email(request.get("email"));
return OK(
userService.findByEmail(email).isPresent()
);