javaScript/nodeJs

노드js 내장모듈// url

부엉이사장 2022. 6. 21. 05:41

먼저 두 가지 방식의 방식

const url = require('url');

먼저 모듈 가져오자~

 

 

1. 노드의 url방식

url parse객체함수에 url주소를 넣어주고 콘솔로 출력해보면

이렇게 받은 url을 분석해서 객체로 만들어준다. 

서버만들때 path부분만으로 IO작업 해줘야하니까 이걸로 관리할듯?

 

 

만약 처음부터 객체로 관리한걸 다시 통주소로 만들어주려면 

console.log(url.format(myURL))

이렇게쳐주면 된다. 다시 통주소를 가져와줌.

 

 

 

 

 

2. WHATWG방식

이렇게 생성자로 만들어줘야한다.

출력해보면 역시 객체로 나온다.

합치려면 똑같이 format써주면 됨.

console.log(url.format(parsedUrl))

 

WHATWG방식의 특이한점은 search 키값 부분을 searchParams라는 객체로 또 반환해준다. 

console.log(myURL.searchParams)

이렇게 불러올수 있음. 

 

 

 

 

2# WHATWG방식의 searchParams

const { URL } = require('url')
먼저 {URL}로 모듈을 불러오는게 먼저임. 질문하긴했는데 URL로 하는건 안쳐도 되긴되더라.. 아예 모듈없는데 되긴됨..
내장모듈이라 그런가?
암튼 디스트럭처링 문법으로 URL이라는 키에 모듈을 복사하는것 같음.
 
 
암튼 잡설 생략하고
console.log('searchParams:', myURL.searchParams);
으로 출력해보면 

이렇게 불러와줌. 단순하게 위에서 myURL에 searchParams 를 가져온거임. 

URL스트링에선 유니코드? 이런 문자열로 알아볼수 없는데 여기선 한글로 다 해석해준다.

네이버 검색어가 39xxx머시기 초 였던 링크임.

 

console.log('searchParams.getAll():', myURL.searchParams.getAll('query'));

query라는 키값의 벨류 다가져와줘. (query라는 키값이 여러개면 그것들 어레이로 다가져와줌.

console.log('searchParams.get():', myURL.searchParams.get('query'));

query키값의 벨류 가져와줘. 이건 스트링으로 뱉음.

 

console.log('searchParams.has():', myURL.searchParams.has('page'));

page라는 키값이 안에 있니? 불린값으로 뱉음

 

 

console.log('searchParams.keys():', myURL.searchParams.keys());

키값 다 가져와줘. {}로 감싸진걸로 뱉음.. 이름까먹었다

console.log('searchParams.values():', myURL.searchParams.values());

벨류값 다가져와줘, 얘도 역시다.

 

myURL.searchParams.append('filter', 'es3');

filter이라는 키값에 es3벨류로 값넣어줘. filter이라고 여러개 넣을 수 있음.

myURL.searchParams.set('filter', 'es6');

filter이라는 키값에있는거 다 지워주고 es6넣어줘

myURL.searchParams.delete('filter');

filter키벨류 다 지워줘

 

 

console.log(myURL.searchParams.toString());

Params 객체안에껄 문자열로 다시 합쳐줘, 이건 뭐 json이랑 걍 똑같네

 

 

 

 

 

1# node url방식에서 search부분을 객체로 뽑기 - querystring

const url = require('url');
const querystring = require('querystring');

이건 당연히 치고 시작해야한다. WHATWG방식이 아니다!

 

const query = querystring.parse(parsedUrl.query);

먼저 이걸 해주는이유는 parsedUrl의 query부분이 분해되어있지 않기떄문이다.

이렇게 드럽게 생겼다. 이걸 객체로 만들어주는 querysting을 적용해보면

짠~

이렇게 이쁘게 객체로 만들어준다. 그래서 query.sm 등등으로 벨류값 뽑아올수 있어.

 

 

console.log('querystring.stringify():', querystring.stringify(query));

이 객체를 다시 합쳐줘. json이랑 똑같구만 얘도.

 

 

 

 

 

--------------

예전 todoapp을 만들면서 걍 대충 물음표 뒤에부분이 쿼리고 패스 나눠주고 공부할때

이런 모듈을 가져오는게 뭔지도 모르고 npm install querystring치고 지랄했었는데ㅋㅋㅋ

자세히 하나하나 배우고나니 대충 이해가 간다.

공부는 지름길이 없구나