반응형
이번 포스팅에서는 HTTP 패킷의 요청헤더(Request Headers)에 있는 쿠키를 파싱할 때 사용할 수 있는 함수를 간단하게 만들어 보고자 한다. express에서 "cookie-parser" 패키지를 사용하는 것이 아닌, 직접 함수를 만들어서 사용해 보는 것도 좋은 공부가 되리라 생각한다.
다음과 같은 쿠키값이 요청헤더에 존재한다고 하자.
let cookieText = 'name=123; name2=123; name3=1234; name4=12345; name5=2'
1. ';'를 구분자로 해서 cookieText를 자르고 cookieArr에 담는다.
let cookieArr = cookieText.split(';')
console.log(cookieArr)
// output : [ 'name=123', ' name2=123', ' name3=1234', ' name4=12345', ' name5=2' ]
2. newCookieArr 라는 빈 배열을 만든 후 cookieArr의 원소들에 있는 빈 공백을 제거하여 newCookieArr에 담는다.
let newCookieArr = []
for (let i=0; i<cookieArr.length; i++) {
newCookieArr.push(cookieArr[i].trim())
}
console.log(newCookieArr)
// output : [ 'name=123', 'name2=123', 'name3=1234', 'name4=12345', 'name5=2' ]
3. '='를 구분자로 해서 newCookieArr에 있는 원소들을 자른다.
let cookie = {}
for (let i=0; i<newCookieArr.length; i++) {
let item = newCookieArr[i].split('=')
console.log(item)
}
// output
// [ 'name', '123' ]
// [ 'name2', '123' ]
// [ 'name3', '1234' ]
// [ 'name4', '12345' ]
// [ 'name5', '2' ]
4. '='를 구분자로 해서 자른 값들을 obj라는 객체 안에 key: value 형태로 담는다.
let cookie = {}
for (let i=0; i<newCookieArr.length; i++) {
let item = newCookieArr[i].split('=')
let key = item[0]
let value = item[1]
let obj = { [key]: value } // [key] : 안에 있는 key를 변수로 인식하게끔 하기위한 문법
console.log(obj)
}
// output
// { name: '123' }
// { name2: '123' }
// { name3: '1234' }
// { name4: '12345' }
// { name5: '2' }
5. cookie 라는 객체 안에 cookieText의 내용을 key: value 형태로 집어넣는다. (spread 연산자 사용)
let cookie = {}
for (let i=0; i<newCookieArr.length; i++) {
let item = newCookieArr[i].split('=')
let key = item[0]
let value = item[1]
let obj = { [key]: value } // [key] : 안에 있는 key를 변수로 인식하게끔 하기위한 문법
cookie = {
...cookie, // 이전 값
...obj // 추가할 값
}
}
console.log(cookie)
// output
// {
// name: '123',
// name2: '123',
// name3: '1234',
// name4: '12345',
// name5: '2'
// }
6. cookieText를 매개변수로 하는 cookieParser() 함수를 정의한다. 이 때 return 값은 cookie가 되도록 한다.
module.exports = { cookieParser } 를 통해 모듈처럼 사용가능하도록 하자.
function cookieParser(cookieText) {
let cookieArr = cookieText.split(';')
let newCookieArr = []
for (let i=0; i<cookieArr.length; i++) {
newCookieArr.push(cookieArr[i].trim())
}
let cookie = {}
for (let i=0; i<newCookieArr.length; i++) {
let item = newCookieArr[i].split('=')
let key = item[0]
let value = item[1]
let obj = { [key]: value }
cookie = {
...cookie,
...obj
}
}
return cookie
}
module.exports = {
cookieParser
}
반응형
'Node > Express' 카테고리의 다른 글
Node.js - express (8) 라우터와 미들웨어 (router & middleware) (0) | 2022.02.10 |
---|---|
Node.js - express (7) 세션(session) (2) | 2022.02.09 |
Node.js - express (5) 쿠키(cookie) (0) | 2022.02.07 |
Node.js - express (4) 정적인 파일 처리하기 (0) | 2022.02.04 |
Node.js - express (3) get 요청 , post 요청 (0) | 2022.02.03 |