안녕하세요, Brad입니다. 오늘은 '로그인 기반 개발'에 대하여 배웠는데요. 그 이전에 미션 진행간 각자 모르는 것들에 대한 질문이 있었습니다. 우선 그 부분부터 정리해보죠.
절대경로 / 상대경로의 차이는 뭔가요?
- 절대경로는 전체 경로를
/
(루트)부터 full로 적어주는 것을 의미하고, 상대경로는 현재 경로를 바탕으로 ..(상위로 이동) 또는 .(현재경로) 을 이용하여 경로를 설정하는 것을 말합니다. 상대경로는 현재 경로에 따라 제 각기 설정해줘야 하는 단점때문에 현업에서는 절대경로를 많이 쓴다고 합니다!
/
로 시작하면 절대 경로라고 이해하면 될까요?- 네! 그렇게 이해하면 됩니다.
css는 '/' 바로 밑에 위치하나요?
파일 탐색은 static경로의 루트로부터 시작합니다(static먼저, 그 다음 templates 탐색). static폴더에서 css가 있는지 먼저 탐색을 하고 혹시 그곳에 css가 없으면 templates폴더에서 다시 css를 찾는 것입니다. 실제로 static에 있던 css폴더를 templates로 옮기더라도 제대로 작동하는 것을 확인할 수 있었습니다.
css가 어디에 위치하느냐에 따라 달라집니다. 현재는 static폴더 밑에 바로 css가 위치하기 때문에
/css/bootstrap.min
이런식으로 경로를 지정할 수 있는 것입니다.(추가) 네트워크 요청 순서(크롬 개발자 도구에서 확인가능)
- html부터 가져오고 이 내용을 위에서부터 하나씩 읽어가면서 필요한 부분에 대해 서버에 그때그때 요청합니다(웹은 서버로부터 모든 자원들을 하나씩 요청하는 방식) ↔︎ 모바일앱(앱을 설치할 때 자원들을 한번에 다운받음, 데이터만 서버에서 받음)
- 서버에서 자원을 한번에 다 내려주는게 아니라 html부터 차근차근씩 요청하는 것입니다.
- 절대경로는 전체 경로를
findById()에서 Optional처리는 어떻게 하는게 가장 좋을까요?
- 정답은 없습니다. 프로그램 요구사항에 따라 달라집니다. 각 프로그램 요구사항에 맞춰 이번 미션 코드를 작성해보겠습니다.
Optional<User> maybeUser = userRepository.findById(id);
// 사용자값 null이어도 작동 가능할때 -> 이 경우 User값이 없으면 null이 반환되겠죠
if (maybeUser.isPresent()) {
// 처리내용
}
// 또는
User user = userRepository.findById(id).orElse(null);
// 프로그램내 반드시 사용자가 있어야 할때, 사용자가 없으면 작동이 제대로 안될 때
User user = userRepository.findById(id).orElseThrow(() -> new IllegalArgumentException); // 예외처리
User클래스에서 Long타입의 id대신 String타입의 userId를 PK로 사용하면 어떤가요?
- 물론 userId를 PK로 지정할 수 있습니다. 하지만 userId가 변경될 가능성이 있다면 이것을 PK로 사용할 수 있을까요? 그런데 userId는 절대로 안바뀐다구요? 네! 지금은 그렇죠. 근데 영원한 건 없잖아요! 주민등록번호도 특별한 경우에 따라 바꿀 수 있으니까요. 이와 같이 변동 가능성 때문에 고유한 값을 가지는 특정 id를 부여하는 것입니다.
- 또 다른 이유는 데이터베이스 성능 개선 측면에서 숫자값이 PK로 사용되는 것이 유리하다고 하네요.
- 무조건 변화되지 않을 것이라 가정하는 것은 위험합니다. 여지를 두고 혹시나 변화가 발생했을 때는 그것을 받아들일 수 있는 겸허함이 필요합니다!
a태그는 GET방식으로만 매핑시킬 수 있나요?
- (Javascript 안쓴다는 가정하) GET방식으로 접근 가능합니다.
- 하지만 Javascript를 쓴다면 POST방식으로 접근도 가능합니다. 하지만 이 하나를 위해 여러 자바스크립트 코드가 필요하므로 비효율적이라고 하네요.
- css, image 등 자원요청도 마찬가지로 GET방식으로 요청합니다.
- POST방식으로 보내기 위해선 form태그를 써야합니다!
오늘 Q&A한 부분에 대한 정리를 해봤는데요. 로그인 관련한 내용은 내일 실제로 구현을 하면서 정리해보도록 하겠습니다.
오늘 추가적으로 공부한 부분
'TIL' 카테고리의 다른 글
Today's Dev Notes(2018-11-22) (0) | 2018.11.22 |
---|---|
Today's Dev Notes(2018-11-21) (0) | 2018.11.22 |
Today's Dev Notes(2018-11-18) (0) | 2018.11.18 |
Today's Dev Notes(2018-11-17) (0) | 2018.11.18 |
Today's Dev Notes(2018-11-15) (0) | 2018.11.15 |