I/O 요청이 많은 서버(채팅)에 효율적이다. 싱글 스레드를 사용해 CPU 연산이 많은 프로그램에는 적합하지 않다.
JavaScript : 브라우저에서만 동작하며 client에 대한 개발
Nodejs : 브라우저 밖에서 동작하는 Javascript 런타임으로, server에 대해 Javascript로 웹 서버 구축
npm install express
const express = require('express')
const app = express()
require()
외부 모듈을 가져오는 메서드const port = 3000
app.listen(port, ()=>{
console.log(`App listen on port ${port}`)
})
app.get('/', ()=>{})
get
HTTP 메서드/
라우팅()=>{}
콜백 함수app.get('/cat', (req, res)=>{
res.send('고양이')
})
app.get('/dog', (req, res)=>{
res.json({'sound':'멍멍'})
})
res.send('value')
response 보내는 역할res.json({'key':'value'})
send 대신 json 을 이용해 직관적으로 사용 가능param
app.get('/user/:id', (req, res)=>{
const p = req.params
console.log(p)
})
주소 창의 :
뒤의 데이터를 이용할 수 있다
query
app.get('/user/:id', (req, res)=>{
const q = req.query
console.log(q)
})
주소 창의 ?
뒤로 key-value 형태로 전달
param
Get의 param 방식과 동일
body
app.post('/user/:id', (req, res)=>{
const b = req.body
console.log(b)
})
body에 값을 담아 전달
app.get('/sound/:name', (req, res)=>{
const { name } = req.params
console.log(name)
res.json({'sound':'야옹'})
})
변수 명 대신 중괄호 안에 json의 key 값을 넣어 사용하면 편하다.
app.get('/sound/:name', (req, res)=>{
const { name } = req.params
if (name == "dog") {
res.json({'sound':'멍멍'})
} else if (name == "cat") {
res.json({'sound':'야옹'})
} else if (name == "pig") {
res.json({'sound':'꿀꿀'})
} else {
res.json({'sound':'알 수 없음'})
}
})
cors 설치 + 모듈 추가
npm install cors
const cors = require("cors")
모든 요청에 응답
app.use(cors())
궁금해서 아주 간단하게만 사용해봤는데 JS 실행을 위한 것이라서 그런지 JS와 매우 유사했고 서버 부분도 JS로 할 수 있다는 점이 좋은 것 같다. 백엔드 프레임워크의 전체적인 흐름은 비슷하구나 싶었다.