Node 내장 모듈 (2) - url, dns, searchParams

김무연·2023년 12월 11일

Backend

목록 보기
17/49

url

인터넷 주소를 쉽게 조작하도록 도와주는 모듈입니다.

url 처리에는 크게 두 가지 방법이 있는데, 하나는 예전부터 노드에서 사용하던 방식의 url과, 노드 버전 7에서 추가된 WHATWG 방식의 URL 입니다.

요즘은 브라우저에서도 사용하는 WHATWG 방식을 사용하여 호환성이 좋습니다.

WHATWG url 구분 방법

const url = require('url');

const { URL } = url;
const myURL = new URL('http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor');
console.log('new URL():', myURL);
console.log('url.format():', url.format(myURL));

url.format(객체) : 분해되었던 url 객체를 다시 원래 상태로 조립합니다.

searchParams

search 부분은 보통 주소를 통해 데이터를 전달할 때 사용됩니다. search는 물음표(?)로 시작하고, 그 뒤에 키=값 형식으로 데이터를 전달합니다. 여러 키가 있을 경우에는 &로 구분합니다. search 부분을 다루기 위해 searchParams라는 특수한 객체가 생성됩니다.

이 특수한 객체로 search 부분을 조작하는 다양한 메서드를 지원합니다.

const myURL = new URL('http://www.gilbut.co.kr/?page=3&limit=10&category=nodejs&category=javascript');
console.log('searchParams:', myURL.searchParams);
console.log('searchParams.getAll():', myURL.searchParams.getAll('category'));
console.log('searchParams.get():', myURL.searchParams.get('limit'));
console.log('searchParams.has():', myURL.searchParams.has('page'));

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

myURL.searchParams.append('filter', 'es3');
myURL.searchParams.append('filter', 'es5');
console.log(myURL.searchParams.getAll('filter'));

myURL.searchParams.set('filter', 'es6');
console.log(myURL.searchParams.getAll('filter'));

myURL.searchParams.delete('filter');
console.log(myURL.searchParams.getAll('filter'));

console.log('searchParams.toString():', myURL.searchParams.toString());
myURL.search = myURL.searchParams.toString();

dns

DNS를 다룰 때 사용하는 모듈입니다. 주로 도메인을 통해 IP나 기타 DNS 정보를 얻고자 할 때 사용합니다.

도메인을 다양한 방식으로 설정 가능 ( 즉 레코드를 dns를 통해 조회 가능 )

A : ipv4 주소
AAAA : ipv6 주소
NS : 네임서버
SOA : 도메인 정보
CNAME : 별칭, 주로 www가 붙은 주소는 별칭일 때가 많음
MX : 메일 서버
================'
위 의 것들을 레코드라고 부릅니다. 이러한 레코드들을 설정 및 조회 하는 것이 dns입니다.

import dns from 'dns/promises';

const ip = await dns.lookup('gilbut.co.kr'); // 주소의 ip주소를 가져옴
console.log('IP', ip);

const a = await dns.resolve('gilbut.co.kr', 'A'); // 레코드들을 가져옴
console.log('A', a);

const mx = await dns.resolve('gilbut.co.kr', 'MX'); // 메일서버 셋팅
console.log('MX', mx);

const cname = await dns.resolve('www.gilbut.co.kr', 'CNAME'); // 별명
console.log('CNAME', cname);

const any = await dns.resolve('gilbut.co.kr', 'ANY'); // 나머지 것들
console.log('ANY', any);

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글