웹/Node.js
[nodes.js] node module
ohojee
2023. 6. 22. 04:04
노드 기능 알아보기
모듈로 만들기
- 다른 모듈을 사용하는 파일을 다시 모듈로 만들 수 o
- module.exports에는 객체만 대입해야하는 것이 아니라 함수나 변수 대입도 o
//var.js
const odd = 'odd'
const even = 'even'
module.exports = {
odd,
even,
}
//func.js
const { odd, even } = require('./var')
function check(num) {
if (num % 2) {
return odd
}
return even
}
module.exports = check
//index.js
const { odd, even } = require('./var')
const check = require('./func')
function checkString(str) {
if (str.length % 2) {
return odd
}
return even
}
console.log(check(10))
console.log(checkString('hello'))
- require이 반드시 파일 최상단에 위치할 필요 x module.exports도 파일 최하단에 위치할 필요 x
http 모듈로 서버 만들기
요청과 응답
❓ http createServer 안 해도 열리는데 왜 해야하는 것,,?
const http = require('http')
http.createServer((req, res) => {
res.writeHead(200, { 'content-type' : 'text/html; charseet=utf-8' })
//응답에 대한 정보를 기록하는 메서드
//첫번째 인수 : 성공적인 요청임을 의미하는 200
//두번재 인수 : 응답에 대한 정보(콘텐츠 형식이 html, 한글 표시를 위해 utf-8)
//이 정보가 기록되는 부분을 header라고 부름
res.write('<h1>hello node</h1>')
//첫번째 인수 : 클라이언트로 보낼 데이터, 여러번 호출해서 데이터를 여러개 보내도 됨
//데이터가 기록되는 부분이 body
res.end('<p>hello server</p>')
//응답 종료하는 메서드
})
.listen(8080, () => {
console.log('8080 포트에서 서버 대기 중')
})
rest와 라우팅
- rest : representational state transfer 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법
- http 요청 메서드
- get : 서버 자원을 가져오고자 할 때, 요청의 본문에 데이터를 넣지 x, 데이터를 서버로 보내야한다면 쿼리스트링 사용
- post : 서버에 자원을 새로 등록하고자 할 때, 요청의 본문에 새로 등록할 데이터를 넣어 보냄
- put : 서버의 자원을 요청에 들어있는 자원으로 치환하고자 할 때, 요청의 본문에 치환할 데이터를 넣어 보냄
- patch : 서버 자원의 일부만 수정하고자 할 때, 요청의 본문에 일부 수정할 데이터를 넣어 보냄
- delete : 서버의 자원을 삭제하고자 할 때, 요청의 본문에 데이터를 넣지 x
- options : 요청을 하지 전에 통신 옵션을 설명하기 위해 사용
- 주소 하나가 여러개의 요청 메서드를 가질 수 o ex) get /user : 사용자 정보를 가져오는 요청 post /user : 새로운 사용자를 등록하려함 하나를 정하기 어려운 로그인 같은 동작은 post를 사용하면 됨