📌 params
const express = require('express')
const app = express()
app.listen(3000)
app.get('/products/:n', function(req, res) {
if (req.params.n > 10) {
console.log("url로 전달받은 숫자가 10보다 크네요.")
}
res.json({
num : req.params.n
})
})
app.get('/test/1', function(req, res) {
res.json({
test : 1
})
})
console.log(req.params)는 문자열로 출력, console.log(req.params.n)는 숫자로 출력
- 그러나 문자열과 숫자 모두 숫자로 판단하고 if문 출력함 ⇒ 자바스크립트라서 가능한 것.
- 자바스크립트는 문자열로 받은 숫자를 알아서 숫자로 바꾸는 계산도 해줌
- 그러나 다른 언어를 위해 다른 언어와 똑같이 사용하면 좋음...
parseInt 사용하기
const express = require('express')
const app = express()
app.listen(3000)
app.get('/products/:n', function(req, res) {
let number = parseInt(req.params.n) - 10
if (number > 5) {
console.log(number)
console.log("url로 전달받은 숫자가 10보다 크네요.")
}
res.json({
num : number
})
})
app.get('/test/1', function(req, res) {
res.json({
test : 1
})
})
📌 req.params
req.params : 데이터를 url로 하나씩 받아서 각각 다른 페이지를 꾸릴 때 사용 (ex. 블로그, 유튜브)
- 영상 클릭 주소 : 하나의 영상을 나타내는 유니크한 키 값
const express = require('express')
const app = express()
app.listen(3000)
app.get('/:nickname', function(req, res) {
const param = req.params
res.json({
channel : param.nickname
})
})
- 하나의 데이터가 아니라 여러 개의 데이터를 던질 때 사용하는 것 : ?
app.get('/watch', function(req, res) {
const q = req.query
console.log(q)
res.json(q)
})
{ v: 'KMhf4ex3d-E', t: '291s' }로 출력
app.get('/watch', function(req, res) {
const q = req.query
console.log(q.v)
console.log(q.t)
res.json({
video : q.v,
timeline : q.t
})
})
{"video":"KMhf4ex3d-E","timeline":"291s"} 로 출력
📌 비구조화
const express = require('express')
const app = express()
app.listen(3000)
app.get('/watch', function(req, res) {
const {v, t} = req.query
console.log(v)
console.log(t)
res.json({
video : v,
timeline : t
});
})
const array = [1, 2, 3, 4, 5]
const [ , num2, num3, , num5] = array
console.log(num2)
console.log(num3)
console.log(num5)
📌 예외 처리
- 예외 처리 : 개발자가 예상하지 못한 에러를 처리해주는 모든 로직
let youtuber1 = {
channelTitle : "십오야",
sub : "593만명",
videoNum : "993개"
}
let youtuber2 = {
channelTitle : "침착맨",
sub : "227만명",
videoNum : "6.6천개"
}
let youtuber3 = {
channelTitle : "테오",
sub : "54.8만명",
videoNum : "726개"
}
app.get('/:nickname', function(req, res) {
const {nickname} = req.params
if (nickname == "@15ya.fullmoon") {
res.json(youtuber1)
} else if (nickname == "@ChimChakMan_Official"){
res.json(youtuber2)
} else if (nickname == "@TEO_universe"){
res.json(youtuber3)
} else {
res.json({
message : "저희가 모르는 유튜버입니다."
})
}
})
📌 자바스크립트 네이밍 룰
- 자바스크립트의 네이밍 케이스
- [kebab-case] cf. snake_case(하이픈이 아니라 언더바 사용) // 둘 중 어떤 것도 좋으니 "통일"
- 폴더 ex. demo-api
- 파일 ex. object-api-demo.js
- ⇒ 특징 :
- 알파벳 소문자
- 두 개 이상의 단어를 합쳐서 쓸 땐, 첫 번째 단어와 두 번째 단어 사이에 '하이픈'
- [camelCase] 낙타의 등
- 변수, 함수 ex. ChannelTitle, videoNum
- ⇒ 특징 : 두 개 이상의 단어를 합쳐서 쓸 땐, 두 번째 단어의 첫 글자를 '대문자'로
- 클래스 : PascalCase - 첫 글자도 대문자
📌 자바스크립트 Map (String)
- map
- key로 value를 찾을 수 있으면 map임.
- key : value 쌍으로 이루어진 데이터 저장하는 형태
- json도 map 형태
let db = new Map();
db.set(1, "NoteBook")
db.set(2, "Cup")
db.set(3, "Chair")
console.log(db)
console.log(db.get(1))
console.log(db.get(2))
console.log(db.get(3))
- map을 데이터베이스 대신으로 사용할 것임
- 신입 사원 역량 반드시 알아야 하는 자료 구조
- express + map (String)
const express = require('express')
const app = express()
app.listen(3000)
app.get('/:id', function (req, res) {
let {id} = req.params
if (id === 'favicon.ico')
return;
console.log(id)
id = parseInt(id)
console.log(db.get(id))
res.send('Hello World')
})
let db = new Map();
db.set(1, "NoteBook")
db.set(2, "Cup")
db.set(3, "Chair")
db.set("1", "LimHanbi")
console.log(db)
console.log(db.get(1))
console.log(db.get("1"))
- id를 문자로 받기 때문에 parseInt를 이용하여 숫자로 바꾸기
app.get('/:id', function (req, res) {
let {id} = req.params
if (id === 'favicon.ico')
return;
id = parseInt(id)
res.json({
id : id,
productName : db.get(id)
})
})
let db = new Map();
db.set(1, "NoteBook")
db.set(2, "Cup")
db.set(3, "Chair")
db.set("1", "LimHanbi")
{"id":3,"productName":"Chair"} 출력
- 없는 아이디 예외 처리(고려하지 않은 객체가 들어오면 처리) → 없는 아이디 값이 들어오면...
app.get('/:id', function (req, res) {
let {id} = req.params
if (id === 'favicon.ico')
return;
id = parseInt(id)
if (db.get(id) == undefined) {
res.json({
message : "없는 상품입니다."
})
} else {
res.json({
id : id,
productName : db.get(id)
})
}
})
{"message":"없는 상품입니다."}
- else를 사용하지 않으면 오류가 발생한 후 다시 json 보내는 것처럼 보여서 오류 발생함.
📌 map object
const express = require('express')
const app = express()
app.listen(3000)
app.get('/:id', function (req, res) {
let {id} = req.params
if (id === 'favicon.ico')
return;
id = parseInt(id)
if (db.get(id) == undefined) {
res.json({
message : "없는 상품입니다."
})
} else {
res.json({
id : id,
productName : db.get(id)
})
}
})
let db = new Map();
let notebook = {
productName : "Notebook",
price : 2000000
}
let cup = {
productName : "Cup",
price : 3000
}
let chair = {
productName : "Chair",
price : 100000
}
let poster = {
productName : "Poster",
price : 20000
}
db.set(1, notebook)
db.set(2, cup)
db.set(3, chair)
db.set(4, poster)
console.log(db)
console.log(db.get(1))
console.log(db.get(2))
console.log(db.get(3))

- api에 객체를 던져보는 것을 map이랑 연동할 것임
app.get('/:id', function (req, res) {
let {id} = req.params
if (id === 'favicon.ico')
return;
id = parseInt(id)
if (db.get(id) == undefined) {
res.json({
message : "없는 상품입니다."
})
} else {
res.json(db.get(id))
}
})
const express = require('express')
const app = express()
app.listen(3000)
let youtuber1 = {
channelTitle : "십오야",
sub : "593만명",
videoNum : "993개"
}
let youtuber2 = {
channelTitle : "침착맨",
sub : "227만명",
videoNum : "6.6천개"
}
let youtuber3 = {
channelTitle : "테오",
sub : "54.8만명",
videoNum : "726개"
}
let db = new Map();
db.set(1, youtuber1)
db.set(2, youtuber2)
db.set(3, youtuber3)
app.get('/youtuber/:id', function (req, res) {
let {id} = req.params
id = parseInt(id)
const youtuber = db.get(id)
if (youtuber == undefined) {
res.json({
message : "유튜버 정보를 찾을 수 없습니다."
})
} else {
res.json(youtuber)
}
})