웹/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를 사용하면 됨