if (req.url === "/hello") { res.writeHead(200, { "Content-Type": "text/html" }); const helloHTML = fs.readFileSync("./hello.html", "utf-8"); res.write(helloHTML); res.end(); } else if (req.url == "/first.png") { res.writeHead(200, { "Content-Type": "image/png" }); const image = fs.readFileSync("./first.png"); res.write(image); res.end(); } 위 코드와 같이 else if 구문을 추가하고 나서 /hello로 경로로 접근하고 /first.png로 접근하지 않았음에도 이전에는 깨졌던 이미지 파일이 정상적으로 노출되는 이유는 무엇인가요? hello.html 안의 <img src="./first.png"> 때문에 브라우저가 자동으로 /first.png 를 추가 요청 하는 것일까요? 찾아보니까 HTML subsource request라는 개념과 관련되어있는것 같아서 다음과 같이 생각을 정리해보았는데 맞는지 확인 부탁드립니다. 1) localhost:3000/hello 입력 2) GET /hello.html 요청 3) 서버에서 hello.html 응답 4) 브라우저가 HTML 다운로드 5) DOM 파싱 6) img 태그 발견 7) first.png 필요 확인 후 서버에 추가 요청 8) GET /first.png요청을 보냄 이 과정에서 Node.js 서버는 정적 파일을 자동 제공하지 않기 떄문에 8번 과정에서 추가로 발생한 /first.png 요청을 처리하기 위해 라우팅을 추가하였고 Else if 구문을 타서 정적 파일을 제공받았다.
res.cookie("token", token, {httpOnly: true}); httpOnly를 true로 설정하여 클라이언트 사이드 스크립트가 쿠키를 읽지 못하도록 한다는게 어떤 말인지 자세히 듣고 싶습니다! 브라우저 쿠키, 클라이언트 사이드 스크립트 쿠키가 무슨 차이가 있는지 왜 읽지 못하도록 하는지가 주로 궁금합니다.
Express는 비동기 에러를 잡지 못한다고 강의에서 배웠습니다. 이게 혹시 싱글 스레드와 관련이 있을까요? 그렇다면 스프링의 경우는 어떻게 다를까요? Express는 에러 발생 지점에 가까이 정의된 에러 처리 미들웨어를 우선적으로 처리한다고 배웠습니다. 단순 코드적으로 위치가 가까운 거 맞나요? 에러 처리 미들웨어가 여러 개 있고 파일 내에 섞여있으면 코드 파악이 어려워질 수 있을 것 같아요. 실무에서 보통 권장되는 방식은 뭘까요? 에러처리 미들웨어를 하나만 두는지, 나눠서 같은 코드 위치에 두는지, 나누서 서로 다른 코드 위치 (라우터 사이)에 두는지 궁금합니다.
화면에 수정사항에 "register" ==>"/users/register" 로 되어 있는데 저는 그렇게 하면 error 화면이 뜹니다. 하단 수업 노트에는 return res.status(400).send("User already exists"); 이렇게 되어 있습니다. 제 코드에서 아래와 같이 수정하니까 동작하긴 하는데.... return res.render("users/register",{error:"User already exists"}); 이렇게 "users/register"로 앞에 "/" 없이 "users/register"로 하니까 동작하는데 제가 어디선가 잘못한 것일까요?
jwt가 뭔지 왜 사용하는건지에 대한 자세한 내용은 안 다루는거 같고 전반적인 crud의 감만 잡고 넘어 가는건지 궁금합니다. 이부분을 part2에서 제대로 배우는지 아님 제가 추가로 학습을 해야하는 부분일까요? 설명히 제대로 안 된 부분들을 직접 찾아서 공부하면서 강의를 듣다보니 흐름도 깨져서 파트2 에서 다룬다면 전반적인 구현정도로만 넘어가려고 질문드립니다.
Express.js를 사용하면 res.writeHead(200, { "content-type": "text/html"}) 위와 같은 writeHead가 자동으로 들어가게 되나요? 또 node는 Express.js와 달리 여러 에러 400, 500에 대해 일일이 writeHead를 달아줘야 하는지도 궁금해요
readFileSync 메서드는 동기적인 메서드라 이벤트 루프에서 막혀서 파일을 읽어오는동안 스레드를 멈춰서 실무에선 잘 사용 안 하지 않나요? 단순히 서버의 흐름 이해를 돕기위한 코드 정도로 이해해도 될까요? 혹시 이 강의는 express와 서버의 개념만 이해하고 넘어가는 정도의 강의일까요? 실무적인 관점의 강의는 파트 2라고 보면 될까요 아님 파트1 파트2 모두 실무적인 관점의 코드는 작성하지 않고 넘어가나요?
안녕하세요~ 제로초님 Q1. 몽고DB 같은 경우는 아틀라스 같이 데이터를 저장할 수있는 유료 공간이 따로 있으니까, 거기에 저장되는지 알겠는데요. MySQL같은 경우는 대체 어디에 저장되서, 데이터를 불러오는 건지 잘 모르겠습니다. 아직, 배포 전이라면, MySQL의 데이터는 제 로컬 컴퓨터에 저장 되는 건가요?? Q2. Express.js는 서버에 요청하고 응답을 받는 문법이니까 이 코드를 잘 짜도 데이터를 받아오는 속도에 엄청난 차이가 있지는 않을 것같은데요. 왜 Next.js 가 나온 건가요?? Q3. 요즘 벡엔드에도 관심이 많아져서, 벡엔드 개발자가 되는 법에 대해서 알아보니까, 다들 자바의 Spring으로 많이 시작하던데요. 벡엔드 개발자가 되려면, JS의 Node.js 와 Express.js 만으로는 부족한가요?? 다시 말해서, 벡엔드 개발자로 취업을 하려면. 반드시 자바를 배워서 Spring을 배워야 하나요?? 벌써 불금이네요. 좋은 밤 보내시고, 주말에도 좋은 일만 가득 하시길 바랍니다 :)