url.parse() deprecated

개발(공부) 자국·2021년 5월 30일
3

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

이런 차이가 있었고 어떻게 사용하는지 알 수 있었다.

profile
기록을 중요하게 생각하는 사람입니다. 학습한 내용을 정리한 것이라 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 언제든 말씀해 주시기 바랍니다.

0개의 댓글