서버 생성해 주는데,
request의 메소드에 따라서
get이면 또 나뉘는데,
/루트면 그냥 메시지 출력
만약 url을 앞쪽 5글자만 (/data 가 5글자니까) 떼어서, 그게 /data면
url용 parse 해줘서 쿼리들 parse 해줘서 잘 나눠줌.
참고로, url.parse(req.url) 자체는
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?hello=1&kim=3asd',
query: 'hello=1&kim=3asd',
pathname: '/data',
path: '/data?hello=1&kim=3asd',
href: '/data?hello=1&kim=3asd'
}
이렇게 url에 따라서 여러 것들로 나눠줌.
.query는 그것들 중 쿼리만 가져온 거.
참고로, 그냥
url.parse(req.url).query 하면 hello=1&kim=3asd 이렇게 그대로 문자열로 나옴.
근데 url.parse(req.url, true) 해서 true를 주면 이거는 각 값들을 객체형식으로 만들어 달라 이거임.
그래서 { hello: '1', kim: '3asd' } 이렇게 나옴.
여튼 응답의 헤더에 콘텐츠 타입을 text인데 html로 해 주고,
writeHead 이거는 응답코드 쓰는 거같다. 실제로 400으로 해 놨더니 응답이 400으로 왔다. 물론 데이터는 제대로 응답됐고, HTTP 코드만 400으로 나왔다.
뭐 여튼 html 태그로 주고 싶어서 헤더의 콘텐츠 타입을 text/html로 했고,
write로 응답에 써 줬다. response.write(값)이 메시지바디에 쓰는 건가 보다.
그리고, 덮어쓰기가 아니고 추가쓰기 인가 보다.
res.end(데이터)는 응답 메시지의 바디에 저걸 추가로 써 주면서 보내주는 것 까지 같이 하나 보다.
근데,
그냥 res.end() 해도 된다.
난
그냥 응답 준비를 끝냈고 전송한다는 res.end()와 응답 메시지 바디에 쓰는 res.write()를 구분지어 놓는게 훨씬 좋을 것 같다.
'프론트엔드-코드 > Node.js' 카테고리의 다른 글
express + mysql (0) | 2023.11.03 |
---|---|
express (0) | 2023.10.30 |
파일 fs (0) | 2023.10.11 |
프로젝트 폴더에 파일 생성 -미완 (0) | 2023.10.06 |
프로젝트 폴더에 폴더 생성 (0) | 2023.10.06 |