const express = require('express');
const app = express();
const url = require('url');
app.get('/', (req, res) => {
const urlParser = url.parse(req.url, true);
console.log(urlParser);
res.send('hello');
})
app.listen(3000);
url에 대한 정보를 알고 싶어서 찾아보니 url = require('url')
를 하면
urlParser에 url에 대한 정보가 객체로 담기는 것을 알았고
path 가 '/' 이고 get 메소드의 요청을 받았을 때 'hello'를 보내주는
간단한 코드다. 여기에서 중간에 url이 어떻게 나오는지 보려고 했다.
그런데 VScode에서 const urlParser = url.parse(req.url, true);
이렇게 취소선이 생기는 것을 보고 왜 그런지 설명을 보니
UrlWithParsedQuery' of 'url.parse' is deprecated.
이런 문구가 있었다. 더 이상 사용하지 않으니 추천하지 않는다는 말이었다.
좀 더 찾아보니까 이런 글을 찾을 수 있었다.
stackoverflow : node legacy url.parse deprecated, what to use instead?
이 방법은 node의 legacy 방법이었다.
그래도 한번 실행은 시켜봤다. 동작은 하는지 결과를 어떻게 나오는지 봤더니 콘솔이 이렇게 나왔다.
'/' path 에 get 메소드로 http://localhost:82/?username=kim
의 query를 넣어서 요청을 보냈다.
// 이부분
const urlParser = url.parse(req.url, true);
console.log(urlParser);
// console.log ->
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?username=kim',
query: [Object: null prototype] { username: 'kim' },
pathname: '/',
path: '/?username=kim',
href: '/?username=kim'
}
에러가 나지는 않았다. 하지만 정보가 정확하지 않은 것 같았다.
그래서 요즘은 어떻게 저 방법을 대신 할 수 있는지 찾아봤다.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
const urlNew = new URL(req.url, 'http://localhost:82/flight')
console.log(urlNew);
res.send('hello');
})
app.listen(3000);
요즘은 const urlNew = new URL(req.url, '절대주소');
이렇게 사용하고 있었다.
왠지 코드가 더 짧아졌다. 위에 require('url')
을 하지 않아도 되고
사용하고 싶을 때 중간에 저렇게 클래스의 인스턴스 객체를 만들듯이
URL의 클래스가 있는것 같았다.
이것은 어떻게 작동하는지 콘솔을 확인해 봤다.
// 이부분
const urlNew = new URL(req.url, 'http://localhost:82/flight')
console.log(urlNew);
// console.log ->
URL {
href: 'http://localhost:82/?username=kim',
origin: 'http://localhost:82',
protocol: 'http:',
username: '',
password: '',
host: 'localhost:82',
hostname: 'localhost',
port: '82',
pathname: '/',
search: '?username=kim',
searchParams: URLSearchParams { 'username' => 'kim' },
hash: ''
}
에러는 나지 않았고 정보를 보니 null이 난무했던 이전 방법보다
많은 정보가 들어 있었다. 실제적으로 설정한 부분이 잘 나왔고
search 부분이 query의 부분과 비슷한 정보가 담겨 있었다.
console.log(req.query); // /?username=kim
console.log(urlNew.search); // ?username=kim
이런 차이가 있었고 어떻게 사용하는지 알 수 있었다.