리셋 되지 말자

URL 본문

NodeJS/생활코딩

URL

kyeongjun-dev 2020. 9. 8. 12:24

URL 형식

http://tistory.com:3030/main?id=HTML&page=12 

통신규칙 : // host(ip주소) : 포트번호 / 파일 ? 쿼리 스트링(query string)

 

URL 을 통해서  입력된 값 사용하기

  • main.js
var http = require('http');
var fs = require('fs');
var app = http.createServer(function(request,response){
    var url = request.url;
    console.log(url); // url 값 확인
    if(url == '/'){
      url = '\\index.html';
    }
    if(url == '/favicon.ico'){
        response.writeHead(404);
        response.end();
        return;
    }
    response.writeHead(200);
    
    response.end(fs.readFileSync(__dirname + url));
    
 
});
app.listen(80);
  • localhost/?id=HTML 로 접속 시 콘솔 출력
/?id=HTML
internal/fs/utils.js:269
    throw err;
    ^

Error: ENOENT: no such file or directory, open 'c:\VSCodeFiles\JS\OpenTutorial/?id=HTML'

오류가 나지만, 임의로 입력한 url 정보가 출력되는것을 확인할 수 있다.

  • query string 추출하기
var http = require('http');
var fs = require('fs');
var url = require('url') // url 모듈을 사용한다

var app = http.createServer(function(request,response){
    var _url = request.url;
    var queryData = url.parse(request.url, true).query;
    console.log(queryData); // 쿼리 스트링 값 확인
    console.log(_url); // url 값 확인
    ...

url 모듈을 사용해 쿼리 스트링 값을 파싱한다. 결과는 아래와 같다.

[Running] node "c:\VSCodeFiles\JS\OpenTutorial\main.js"
[Object: null prototype] { id: 'HTML' }
/?id=HTML
internal/fs/utils.js:269
    throw err;
    ^

Error: ENOENT: no such file or directory, open 'c:\VSCodeFiles\JS\OpenTutorial[object Object]'

여기서 객체가 추출되므로, console.log(queryData.id)를 출력하면 'HTML'이 출력된다.

 

URL의 query string을 전송

  • response.end의 인자를 아래와 같이 변경
response.end(queryData.id);
  • 'localhost/?id=HTML'로 접속한 화면

  • 'localhost/?id=CSS'로 접속한 화면

url의 쿼리 스트링부분을 다르게 입력하여 다르게 동작하는, 클라이언트에게 다른 응답을 줄 수 있게 되었다.

'NodeJS > 생활코딩' 카테고리의 다른 글

Not found 오류 구현  (0) 2020.09.09
파일을 이용해 본문 구현  (0) 2020.09.08
파일 읽기  (0) 2020.09.08
동적 웹 만들기  (0) 2020.09.08
웹서버 만들기  (0) 2020.09.08
Comments