[Node.js] 주소 문자열과 요청 파라미터 다루기

URL 모듈

웹사이트에 접속하기 위한 사이트 주소 정보는 노드에서 URL 객체로 만들 수 있다. 만들어진 주소 문자열은 단순 문자열이므로 서버에서 이 정보를 받아 처리할 때는 어디까지가 사이트 주소인지, 어떤 내용이 요청 파라미터인지 구별해야 한다. 이 구별을 위해서 ? 기호를 기준으로 앞에 있는 문자열과 뒤에 있는 문자열을 분리한다. 이 작업을 쉽게 할 수 있도록 노드에 미리 만들어 둔 모듈이 URL 모듈이다.


url 모듈을 사용하면 일반 주소 문자열을 URL 객체로 만들거나, URL 객체에서 일반 문자열로 변환하기가 쉬워진다.

주소 문자열을 URL 객체로 변환하기

url 모듈에서 문자열을 객체로/객체를 문자열로 만들기 위해 사용하는 주요 메소드는 다음과 같다.

parse(): 주소 문자열을 파싱하여 URL 객체를 만듦
format(): URL 객체를 주소 문자열로 반환

다음은 네이버에서 nodejs를 검색할 때 사용된 주소 문자열을 URL 객체로 만들고 다시 주소 문자열로 바꾸는 방법이다.

var url = require('url');
var curURL = url.parse('https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=nodejs');
var curStr = url.format(curURL);
console.log('주소 문자열: %s', curStr);
console.dir(curURL);
cs

url 모듈을 사용하기 위해 require() 메소드를 호출한다. 주소 문자열은 parse() 메소드를 사용해 url 객체로 만든 후 format() 메소드를 사용해 다시 원래의 주소 문자열로 변환되었다. 파일을 실행하면 주소 문자열 정보와 URL 객체에 있는 속성이 출력된다.


요청 파라미터 확인하기 - querystring 모듈

URL 객체 속성 중 query 속성은 요청 파라미터 정보를 갖고 있는데 이 정보 안에는 여러 개의 요청 파라미터가 들어 있다. 웹 서버에서는 클라이언트에서 요청한 요청 파라미터를 받아 처리할 때가 많으므로 이 query 속성에 들어있는 문자열을 다시 각각의 요청 파라미터로 구분해야 한다.

요청 파라미터는 & 기호로 구분되는데 querystring 모듈을 사용하면 쉽게 분리할 수 있다.
위에서 작성한 코드에 다음 코드를 추가하자.

var querystring = require('querystring');
var param = querystring.parse(curURL.query);
console.log('요청 파라미터 중 query의 값: %s', param.query);
console.log('원본 요청 파라미터: %s', querystring.stringify(param));
cs

먼저 require() 메소드로 querystring 모듈을 호출한 다음 parse() 메소드를 호출한다. parse() 메소드는 요청 파라미터 문자열을 파싱하여 객체로 만들어준다. 이 객체에는 각각의 요청 파라미터들이 속성으로 추가되어 속성 값을 참조하면 각각의 요청 파라미터를 사용할 수 있다. stringify() 메소드는 객체 안에 들어 있는 요청 파라미터를 다시 하나의 문자열로 바꿀 때 사용한다.

댓글 없음:

Powered by Blogger.