자바스크립트 언어는 동적타입 언어입니다.
문자열을 숫자로 변환
parseInt("문자열") - 정수parseFloat("문자열") - 실수Number() - Number의 경우는 문자가 포함되어 있는 경우는 안됩니다. ex) "1234"는 가능하지만 "ab34"는 안됨.라우트 매개변수가 담긴 객체
======================================================
url : http://localhost:1234/products/2
======================================================
app.get('/products/:n', function(req, res) { // products뒤에 오는 값을 n이라는 변수에 담습니다.
res.json({
num : req.params.n // req 요청한 params 변수들 중 n 의 값에 해당하는 값을 가져옵니다.
})
})
===>
{"num":"2"}
url 의 :n은 해당하는 부분의 값을 req.params.n로 조회할 수 있습니다.
:id 이면 req.params.id 로 조회할 수 있습니다.
❗ 그러면 :n이 변수처럼 url 에서 해당 부분의 값을 담는다고 했는데 왜 num : n 으로 작성하면 오류가 나는지?
변수니까 값이 담겨있는거 아닌가?
const n = req.params.n // n값을 받았지만 n에 대해서 정의하지 않았습니다.req.parmas.n은 요청을 받을 때 자동으로 req.params객체를 생성, n에 해당하는 값을 저장합니다. (express가 제공하는 기능)쿼리스트링에 대한 정보가 담긴 객체
======================================================
url : https://localhost:1234/watch?v=abcdefg&t=100s
======================================================
app.get('/watch', function(req, res) {
const q = req.query // query 요청을 받았을 때
console.log(q.v) //query 안의 v값
console.log(q.t) //query 안의 t값
//res.json(q)
res.json({ // 각 query의 값을 받아 json 형태로
video : q.v,
timeline : q.t,
// video : videoName,
// playtime : videoTime,
})
})
===>
{"video":"abcdefg", "timeline":"100s"}
? 이후 부터를 쿼리 스트링이라고 합니다.?뒤의 내용들을 쿼리 스트링을 통해 데이터를 보냅니다.키-값(파라미터)들은 &으로 구분합니다.문자열로 저장됩니다url : https://www.youtube.com/watch?v=abcdefg&t=100s
======================================================
app.get('/watch', function(req, res) {
// js객체(json)의 비구조화 할당(구조 분해 할당)
const {v, t} = req.query
// const videoName = query.v
// const videoTime = query.t
console.log(v)
console.log(t)
//res.json(q)
res.json({
video : v,
timeline : t,
// video : videoName,
// timelne : videoTime,
})
})
===>
{"video":"abcdefg", undefined}
const q = req.query를 선언, 쿼리 데이터마다 변수를 생성해서 할당할 경우 비효율적. (낮은 가독성, 수가 많을 때 코드 수 증가)const {v, t} = req.query에서 쿼리 데이터에 해당하는 값이 있다면 값을 저장후, 필요할 때 v, t를 꺼내서 사용.비구조화 할당 : 객체의 속성이나 값을 해ㅔ체하여 그 값을 변수에 각각 할당하여 사용하는 표현식const array = [1, 2, 3, 4, 5]
const [num2, num3] = array
console.log(num2)
console.log(num3)
==> 1
2
const array = [1, 2, 3, 4, 5]
const [ , num2, num3, , num5] = array
const num1 = array[0]
const num4 = array[3]
console.log(num2)
console.log(num3)
console.log(num5)
=======================
2
3
5
// youtuber의 객체생성
let youtuber1 = {
channelTitle : "A",
sub : "10만명",
videoNum : "100개",
}
let youtuber2 = {
channelTitle : "B",
sub : "100만명",
videoNum : "210개",
}
app.get("/:nickname", function (req, res) {
const {nickname} = req.params // 객체에서 nickname 값을 추출하여 변수 nickname에 저장
if (nickname == "@A" {
res.json(youtuber1)
} else if (nickname == "@B" {
res.json(youtuber2)
} else {
res.json({
message : "모르는 유튜브 입니다"
})
}
})
1) url에서 파라미터(:nickname)의 값은 req.params에서 객체 형태로 받습니다. { nickname : a }
2) req.params에서 nickname키의 값(a)을 변수 { nickname }에 저장
3) 해당 nickname에 맞는 객체를 조건문에서 검색, 출력