๐ค ํธ๋ค๋ฌ(handler)๋?
: HTTP request๊ฐ ๋ ์์ค๋ฉด ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋
- ๋ ธ๋ : ์ฝ๋ฐฑํจ์!, app.HTTPMETHOD(path, ํธ๋ค๋ฌ)
โ๏ธ"์ฐ" ์์ธ์ฒ๋ฆฌ
๐๐ป ํด๋ผ์ด์ธํธ์ ์ํต์ ์ ํํ๊ฒ ํ๊ธฐ ์ํจ!
์ฐ์ ์์ธ์ฒ๋ฆฌ ์ ํ์ผ
import express from 'express'
const app = express()
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000')
})
const fruits = [
{id : 1, name : 'apple'},
{id : 2, name : 'orange'},
{id : 3, name : 'strawberry'},
{id : 4, name : 'blu eberry'},
]
// ๊ณผ์ผ ์ ์ฒด ์กฐํ
app.get('/fruits', (req, res) => {
res.json(fruits) //json array
})
// ๊ณผ์ผ ๊ฐ๋ณ ์กฐํ
app.get('/fruits/:id', (req, res) => {
let id = req.params.id
//let fruit = fruits[id-1]
var findFruit = fruits.find(f => f.id == id)
// fruits ๋ฐฐ์ด ์์ ์๋ ๊ฐ์ฒด ์ค, id๊ฐ์ด params.id๋ ๊ฐ์ ๊ฐ์ฒด
// fruits.forEach(function(fruit){
// if(fruit.id == id) {
// findFruit = fruit
// }
// })
res.json(findFruit)
})
์ด ์ฝ๋์์ fruits/7 ์ ๋ ฅ์

์๋ ๋ฐ์ดํฐ์์๋ ๋ถ๊ตฌํ๊ณ 200 OK๋ฅผ ๋ณด๋ด๊ณ ์์
๐๐ป ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์!
// ๊ณผ์ผ ๊ฐ๋ณ ์กฐํ
app.get('/fruits/:id', (req, res) => {
let id = req.params.id
//let fruit = fruits[id-1]
var findFruit = fruits.find(f => f.id == id)
// fruits ๋ฐฐ์ด ์์ ์๋ ๊ฐ์ฒด ์ค, id๊ฐ์ด params.id๋ ๊ฐ์ ๊ฐ์ฒด
if(findFruit) res.json(findFruit)
else //์์ธ๋ฅผ ํฐํธ๋ฆฐ๋ค = http status code ์ฑ๊ณต X ์คํจ!
{
res.status(404).send(
"์ ๋ฌ์ฃผ์ id๋ก ์ ์ฅ๋ ๊ณผ์ผ์ด ์์ต๋๋ค."
)
}
})

== vs ===
// ==, === ์ฐจ์ด
if(1 == "1"){ //์๋ฃํ์ ์๊ด ์์ด, ๊ฐ๋ง ๋น๊ต
console.log("๊ฐ๋ค") // โจ
} else {
console.log("๊ฐ์ง ์๋ค")
}
if(1 === "1"){ // ์๋ฃํ๋ ์๊ด์์!!
console.log("๊ฐ๋ค")
} else {
console.log("๊ฐ์ง ์๋ค") //โจ
}
youtuber ํ์ผ์์์ ์์ธ์ฒ๋ฆฌ ๋ค์ ๋์ !
<์ ์ฒด ์กฐํ> ..(์ด์ธ์ ๊ฒ๋ ๋น์ทํจ)
app.get('/youtubers', function(req, res){
var youtubers = {} // ํด๋ฆฌ์ด ์ฝ๋์์๋ ๋ฐ์ดํฐํํ ๋ฃ์ง ์์.
if(db.size !== 0) {
db.forEach(function(value, key){
youtubers[key] = value
});
res.json(youtubers)
} else {
res.status(404).json({
message : "์กฐํํ ์ ํ๋ฒ๊ฐ ์์ต๋๋ค."
})
}
})
๐ค if(db) ๋ ์์๋ ๊น?
: db๋ map์ธ๋ฐ, ๋ชจ๋ ๊ฐ์ ๋ค ๋นผ๋ map์ด๋ผ๋ ๊ฐ์ฒด๋ ๋จ์์๊ธฐ ๋๋ฌธ์ undefinded์ด ๋ ์ ์์
<์ ํ๋ฒ ๋ฑ๋ก>
์์ธ : ํญ๋ชฉ์ด ์ ๋ถ ๋ฑ๋ก๋์ง ์์์ ์๋ ์์
- 2** : ์ฑ๊ณต
1) ์กฐํ/์์ /์ญ์ ์ฑ๊ณต : 200
2) ๋ฑ๋ก ์ฑ๊ณต : 201
4** : ํด๋ผ์ด์ธํธ ์๋ชฌ
1) 400 : ์์ฒญํ ์ฐ์ฐ(์ฒ๋ฆฌ)๋ฅผ ํ ๋ ํ์ํ ๋ฐ์ดํฐ(req)๊ฐ ๋ ์์ ๋
2) 404 : ์ฐพ๋ ํ์ด์ง(๋ฆฌ์์ค) ์์ (url์ ๋ง๋ api ์์)
app.use(express.json()) // http ์ธ ๋ชจ๋์ธ '๋ฏธ๋ค์จ์ด': json ์ค์
app.post('/youtubers', (req, res) => {
const channelTitle = req.body.channelTi
if(req.body.channelTitle){
//๋ฑ๋ก : Map(db)์ ์ ์ฅ(put) ํด์ค์ผ๋จ
db.set(id++, req.body)
res.status(201).json({
message : `${db.get(id-1).channelTitle}๋, ์ ํ๋ฒ ์ํ์ ์์ํฉ๋๋ค!`
})
} else {
res.status(400).json({
message : "์์ฒญ ๊ฐ์ ์ ๋๋ก ๋ณด๋ด์ฃผ์ธ์."
})
}
})

๋ฑ๋ก ์ฑ๊ณต 201

ํ์ํ ๋ฐ์ดํฐ ๋ ์ค๋ ์ค๋ฅ 400